Rake タスクは、ActiveRecord モデル操作を実行します。rake タスクを追加ActiveRecord::Base
しましたが、ローカルでは機能しますが、Heroku では機能せず、次のエラーが発生します。
初期化されていない定数
との行にActiveRecord::Base
。その行を含めないと、モデルをまったく使用できません(オブザーバーではなくモデルに対して同様のエラーが発生します)。
Rake タスクは、ActiveRecord モデル操作を実行します。rake タスクを追加ActiveRecord::Base
しましたが、ローカルでは機能しますが、Heroku では機能せず、次のエラーが発生します。
初期化されていない定数
との行にActiveRecord::Base
。その行を含めないと、モデルをまったく使用できません(オブザーバーではなくモデルに対して同様のエラーが発生します)。
config.threadsafe を使用していました。これにより、依存関係の読み込みが無効になります (したがって、オブザーバーは読み込まれず、モデルのみが読み込まれます)。解決策は、config.dependency_loading = true if $rails_rake_task を環境に追加することでした。
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
この同様の問題とカスタムレーキタスクのRailscastも参照してください。
config.threadsafe!
production.rb でコメントアウトすることで、この問題を修正できました。