Забавено задание на Rails 3 - надграждането до Rails 3 прекъсва задачите delayed_job

В момента се опитвам да надстроя части от нашето приложение до Rails 3, по-специално нашите модулни тестове. Постоянно се сблъсквам с проблем със забавена работа и пощенски програми, по-специално, че пощенските програми не се „изпращат“, когато тестът се изпълнява.

За да тестваме изпратените имейли, ние ги пускаме всички чрез метод "assert_email" в нашия тестов помощник, който изглежда горе-долу така:

def process_delayed_jobs
  while Delayed::Worker.new(:quiet => true).send(:reserve_and_run_one_job) do
    # nothing
  end
end
alias_method :deliver_delayed_emails, :process_delayed_jobs

def assert_emails(number, skip_assertion = false)
  deliver_delayed_emails # start with a clean slate
  if block_given?
    original_count = ActionMailer::Base.deliveries.size
    yield
    deliver_delayed_emails
    new_count = ActionMailer::Base.deliveries.size
    assert_equal original_count + number, new_count, "#{number} emails expected, but #{new_count - original_count} were sent" unless skip_assertion
  else
    assert_equal number, ActionMailer::Base.deliveries.size unless skip_assertion
  end
end

Тестваме това така:

assert_emails 2 do
  Model.action_that_sends_mailer
end

Този код работи безупречно в Rails 2, изпълнявайки delayed_job 2.0.5. На Rails 3 работим с 2.1.4.

По принцип това се проваля всеки път, когато го тестваме, защото се изпращат имейли с „0“. Самите мейлъри са надградени правилно и аз премахнах грешния ".deliver" от извикванията на метода, за да ги изстреля. Регистърът delayed_jobs е празен, така че не изглежда, че нещо се обработва.

Имам чувството, че пропускам някакъв ключов (но лесен) синтаксисен проблем тук. Всяка помощ се оценява.

Редактиране: Трябва също така да отбележа, че стартирах процеса delayed_job на моята локална машина с "rails delayed_job start" и "script/delayed_job start." Нито решаване на проблема.


person Kevin Whitaker    schedule 28.11.2011    source източник
comment
Моля, покажете ни какво е method_call.   -  person Ryan Bigg    schedule 29.11.2011


Отговори (1)


Оказа се нещо несвързано с delayed_job.

person Kevin Whitaker    schedule 30.11.2011