没有delayed_job,这段代码工作正常;如果我包含delayed_job,我会得到一个未初始化的常量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表就好了.处理程序数据是:
- --- !ruby/struct:Delayed::PerformableMethod
- object: !ruby/module EmailNewsletter
- method_name: :subscribe
- args:
- - email@example.com
一秒钟后,工人拿起并运行,我收到一个错误:未初始化的常量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’)
解决方法
它只是找不到Gibbon libs
- require 'gibbon' #in the module to help it find it
-7个月后,但是嘿
或者更好的是,没有Gibbon :: API类,Gibbon本身就是类,而不是模块.
- api = Gibbon.new("abc123-us2")