【发布时间】:2011-08-22 01:17:04
【问题描述】:
没有delayed_job,这段代码可以正常工作;如果我包含delayed_job,我会在工人每次尝试时收到uninitialized constant EmailNewsletter::Gibbon 错误。
Rails 3.0.7、Gibbon 0.1.5(与 MailChimp 一起使用的 gem)、delayed_job 2.1.4。
控制器
def subscribe
email = params[:email]
EmailNewsletter.subscribe(email)
render(:update) do |page|
page << "...view update code..."
end
end
lib/email_newsletter.rb
module EmailNewsletter
def self.subscribe(email)
g = Gibbon::API.new('api_key_here', :id => 'list_id_here')
g.listSubscribe(:email_address => email)
end
end
使用上面的代码,如果我将电子邮件地址发布到 /subscribe,一切正常。我想加入delayed_job,这样如果MailChimp 响应时间过长,我的应用就不会感觉很慢。
控制器
def subscribe
email = params[:email]
EmailNewsletter.delay.subscribe(email)
render(:update) do |page|
page << "...view update code..."
end
end
看起来工作进入delayed_job 表就好了。 handler 数据为:
--- !ruby/struct:Delayed::PerformableMethod
object: !ruby/module EmailNewsletter
method_name: :subscribe
args:
- email@example.com
一秒钟后,工人捡起它并运行,我收到一个错误:uninitialized constant EmailNewsletter::Gibbon。
application.rb 包括config.autoload_paths += %W(#{Rails.root}/lib)。
我做错了什么?
编辑
为了澄清,抛出错误的行是
g = Gibbon::API.new('api_key_here', :id => 'list_id_here')
我也试过
g = ::Gibbon::API.new('api_key_here', :id => 'list_id_here')
【问题讨论】:
-
您是否重新启动了 DJ 流程?
标签: ruby-on-rails ruby-on-rails-3 delayed-job