Ошибка при использовании гема Гиббона через delayed_job?

Без delayed_job этот код работает нормально; если я включаю delayed_job, я получаю ошибку неинициализированной константы 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. Данные обработчика :

--- !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) .

Что я делаю не так?

Edit

Для пояснения, строка, возникает ошибка

g = Gibbon :: API.new ('api_key_here',: id => 'list_id_here')

Я также пробовал

g = :: Gibbon :: API. new ('api_key_here',: id => 'list_id_here')

8
задан jaacob 10 May 2011 в 17:27
поделиться