Delayed Job Rake Task Failing

若如初见. 提交于 2019-12-20 03:11:26

问题


I'm trying to get delayed job to work as a rake task, but for the life of me I can't figure out what I'm doing wrong. Given the following setup:

#config/environment.rb
Rails::Initializer.run do |config|
  config.gem 'delayed_job'
end

#Rakefile
begin
    require 'delayed/tasks'
rescue LoadError
    STDERR.puts "Run `rake gems:install` to install delayed_job"
end

#Observer
class SomeObserver < ActiveRecord::Observer
   def foo(bar)
   end
   handle_asynchronously :foo
end

Whenever I run rake jobs:clear I get the following error:

undefined method `handle_asynchronously' for SomeObserver:Class

Even though I don't get this error when I'm running the test cases or it directly. Any ideas?


回答1:


DelayedJob defines handle_asynchronously in Delayed::MessageSending::ClassMethods. DelayedJob automatically monkey-patches that module into Module in its lib/delayed_job.rb. You'll likely have better luck requiring that in your Rake task:

#Rakefile
begin
  require 'delayed_job'
  require 'delayed/tasks'
rescue LoadError
  STDERR.puts "Run `rake gems:install` to install delayed_job"
end


来源:https://stackoverflow.com/questions/2161163/delayed-job-rake-task-failing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!