2012-12-10 41 views
2

Rake任務執行ActiveRecord模型操作。上線未初始化的常量ModelObserver - Heroku上的Rake任務

uninitialized constant BookingObserver

ActiveRecord::Base:我在耙子任務中添加ActiveRecord::Base和本地工作,但不是在Heroku上造成此錯誤。如果我不包括那條線,那麼我根本不能使用這個模型(導致類似的錯誤只適用於模型而不是觀察者)

+0

而不是讓我們猜測你的代碼是什麼樣的,怎麼樣向我們展示它? – deefour

+0

請參閱此答案 http://stackoverflow.com/questions/8379079/heroku-rake-task-uninitialized-constant-for-mongomapper-model –

回答

3

您的rake任務需要在執行ActiveRecord代碼之前加載Rails環境。

# lib/tasks/my_tasks.rake 
task :my_task => :environment do 
    # Your task here 
    # it has access to the Rails environment now 
end 

另見this similar issueRailscast on custom rake tasks

+1

已經在這樣做。它在包含「ActiveRecord :: Base」之後在本地工作,這是因爲Rails中的這個錯誤所必需的:https://github.com/rails/rails/issues/882。所以我想這個問題是Heroku,而不是我的代碼。將嘗試與他們聯繫。 – Espen

+0

該解決方案適用於我。謝謝! – Andy

5

我在使用config.threadsafe!禁止依賴加載(因此不加載觀察者,只是模型)。解決方案是在環境中添加config.dependency_loading = true,如果$ rails_rake_task。

+0

這對我來說不起作用,但我可以通過評論'config.threadsafe!'來解決問題。感謝您指點我正確的方向。 – balexand

3

我可以通過在production.rb中註釋config.threadsafe!來解決此問題。

相關問題