没有delayed_job,这段代码运行正常;如果我包含delayed_job,我会在工作人员的每次尝试中得到uninitialized constant EmailNewsletter::Gibbon
的错误。
Rails 3.0.7,Gibbon 0.1.5(用于处理MailChimp的宝石),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')
答案 0 :(得分:2)
它找不到Gibbon libs
require 'gibbon' #in the module to help it find it
-7个月后,但是嘿
或者更好的是,没有Gibbon :: API类,Gibbon本身就是类,而不是模块。
api = Gibbon.new("abc123-us2")
答案 1 :(得分:0)
您是否在gemfile中包含了delayed_job gem。你能尝试一次。
gem 'delayed_job'