Rake 任务执行 ActiveRecord 模型操作。我添加ActiveRecord::Base
了 rake 任务并且在本地工作,但不是在 Heroku 上导致这个错误:
未初始化的常量 BookingObserver
就行了ActiveRecord::Base
。如果我不包括那条线,那么我根本无法使用模型(导致类似的错误只是模型而不是观察者)。
Rake 任务执行 ActiveRecord 模型操作。我添加ActiveRecord::Base
了 rake 任务并且在本地工作,但不是在 Heroku 上导致这个错误:
未初始化的常量 BookingObserver
就行了ActiveRecord::Base
。如果我不包括那条线,那么我根本无法使用模型(导致类似的错误只是模型而不是观察者)。
I was using config.threadsafe! which disables dependency loading (thus not loading the observer, just the model). The solution was to add config.dependency_loading = true if $rails_rake_task to the environment.
您的 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
config.threadsafe!
我可以通过在 production.rb 中注释掉来解决这个问题。
我在 application.rb 中添加了这段代码
config.autoload_paths += Dir[ Rails.root.join('app', 'models', '**/') ]
就在调用之前:
config.active_record.observers = [:user_observer]
我认为因为我的应用程序,它不会自动发现模型/观察者/下的观察者目录