Ruby on rails Heroku上的未初始化常量ModelObserver-Rake任务

Ruby on rails Heroku上的未初始化常量ModelObserver-Rake任务,ruby-on-rails,activerecord,heroku,rake,Ruby On Rails,Activerecord,Heroku,Rake,Rake任务执行ActiveRecord模型操作。我在rake任务中添加了ActiveRecord::Base,它可以在本地工作,但不能在Heroku上工作,从而导致此错误: 未初始化的常量BookingObserver 使用ActiveRecord::Base联机。如果我没有包含这一行,那么我就根本无法使用模型(这会导致类似的错误,只针对模型而不是观察者)。您的rake任务将需要在执行ActiveRecord代码之前加载Rails环境 # lib/tasks/my_tasks.rake tas

Rake任务执行ActiveRecord模型操作。我在rake任务中添加了
ActiveRecord::Base
,它可以在本地工作,但不能在Heroku上工作,从而导致此错误:

未初始化的常量BookingObserver


使用
ActiveRecord::Base
联机。如果我没有包含这一行,那么我就根本无法使用模型(这会导致类似的错误,只针对模型而不是观察者)。

您的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!这将禁用依赖项加载(因此不加载观察者,只加载模型)。解决方案是将config.dependency\u load=true(如果$rails\u rake\u任务)添加到环境中。

我通过注释config.threadsafe解决了这个问题在production.rb中。

我在application.rb中添加了此代码

config.autoload_path+=Dir[Rails.root.join('app','models','**')]

就在打电话之前:

config.active\u record.observer=[:user\u observer]


我想,因为我的应用程序,它不会自动发现我的观察者的目录,它位于models/observators/

下,而不是让我们猜测你的代码是什么样子,把它展示给我们怎么样?请看这个答案已经在做了。它在包含“ActiveRecord::Base”后在本地工作,这是Rails中的此错误所必需的。所以我想问题出在Heroku而不是我的代码。我将尝试联系他们。这对我不起作用,但我通过注释掉
config.threadsafe解决了问题。谢谢你给我指明了正确的方向。