【问题标题】:Error when utilizing Gibbon gem via delayed_job?通过delayed_job 使用Gibbon gem 时出错?
【发布时间】: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 =&gt; 'list_id_here')

我也试过

g = ::Gibbon::API.new('api_key_here', :id =&gt; 'list_id_here')

【问题讨论】:

  • 您是否重新启动了 DJ 流程?

标签: ruby-on-rails ruby-on-rails-3 delayed-job


【解决方案1】:

只是找不到 Gibbon 库

require 'gibbon' #in the module to help it find it

-7 个月后,但是,嘿

或者更好的是,没有 Gibbon::API 类,Gibbon 本身就是类,而不是模块。

api = Gibbon.new("abc123-us2")

【讨论】:

  • 你放在哪个模块里的?
【解决方案2】:

您是否在 gemfile 中包含了delayed_job gem。你可以试一次吗?

 gem 'delayed_job'

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2011-04-14
    • 2013-09-07
    • 2016-05-06
    • 1970-01-01
    • 2013-02-20
    相关资源
    最近更新 更多