2011-11-28 12 views
1

私たちのアプリの一部をRails 3にアップグレードしようとしています。私は一貫して遅れている仕事やメール担当者の問題にぶち当たっています。つまり、テストが実行されたときにメールが送信されていないということです。Rails 3の遅延ジョブ - Rails 3へのアップグレードがdelayed_jobタスクを中断する

は、多かれ少なかれ、このようになります我々のテストヘルパーで「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 

このコードは、delayed_job 2.0.5を実行しているRails 2で問題なく動作します。 Rails 3では2.1.4を実行しています。

"0"の電子メールが送信されるため、基本的にテストするたびに失敗します。メーラ自体は正しくアップグレードされています。メソッド呼び出しから誤った ".diver"を削除して、それらを消しました。 delayed_jobsログは空ですので、何も処理されていないように見えます。

私はここでいくつかの種類の重要な(しかし簡単な)構文問題がないように感じます。どんな助けもありがとうございます。

編集:ローカルマシン上でdelayed_jobプロセスを開始しましたが、「delayed_job start」と「script/delayed_job start」の両方で開始することにも注意してください。問題を解決しないでください。

+0

私たちに 'method_call'とは何かを教えてください。 –

答えて

0

delayed_jobとは関係のないものに変わりました。

関連する問題