2011-03-01 35 views
0

我有一個應用程序已經有一段時間,我正在遷移爲 Rails 2.3.8。有很多有趣的問題,但我在 主場,但現在遇到了一些非常奇怪的錯誤。Rails從2.2.2移動到2.3.8 - 耙不加載環境相同的控制檯或我的應用程序

這個要點是當我用rake運行任務失敗時,但是當我運行 相同的代碼形式的控制檯它工作正常。我設計的'修復'是 移動我的包含ModuleNameA,包括ModuleNameB等到 AR文件的底部。

我不喜歡這個'修復',因爲我不明白它。在我將它們移動到 之前,AR對象(我們稱之爲Bob)在通過rake調用調用時會拋出未定義的方法 錯誤。它在rake任務中被調用 ,但在另一個AR對象中。

所以耙子任務運行着像Worker.work這樣的東西,而且 會失敗,如上所述。當我從控制檯運行Worker.work時,它會通過 。一旦我將包含文件移動到文件底部, 都可以使用。

任何人都見過類似的東西嗎?我覺得 根本是不正確的。就像我已經打破了基本功能 功能,我的'修復'是一種奇怪的補丁。

謝謝。 埃裏克

PS:

還有就是我,包括我的AR對象的模塊。它這樣做增加了類和實例方法:

def self.included(base) 
    base.extend(ClassMethods) 
end 

所有這些模塊中的方法可在控制檯上,而不是通過耙任務。

更新: 我注意到,如果我參加了:工作=>:環境的一部分出 耙任務,而是在做任務塊需要用手環境 文件(例如,需要(File.join(RAILS_ROOT ,'config', 'environment')))它工作正常。突然間,我所有的課程 方法都可用。這非常令人不安。

+0

也許你或其他人已經覆蓋了'環境'任務? – 2011-03-01 02:52:23

+0

不,我找到了它,並把它放入它,它叫railties。我用misc寫了一個puts語句。耙子,它在那裏叫它。 – 2011-03-01 03:38:40

回答

0

所以我想通了....

我們下的應用程序有一個目錄/模型稱爲未包括在負載路徑交易。那就是我的模塊是給我所有問題的地方。爲什麼它從控制檯加載好,而不是用耙子......我不知道。

一旦我將此添加到config.load_path,一切都開始正常工作。我從來沒有注意到這一點,因爲在2.2.2中一切正常,在生產或開發模式下的應用程序,在開發,測試和生產模式下的控制檯和耙子任務。

我覺得這是基本的,我做錯了,因爲錯誤是鈍的,我的'修復'看起來真的很糟糕的想法。

相關問題