2011-11-28 4 views
1

우리 유닛의 레일 3으로의 업그레이드를 시도하고 있습니다. 지연된 구직자 및 우편 발송자 문제가 지속적으로 발생하고 있습니다. 즉, 테스트가 실행될 때 우편 발송자가 "보내지는"것은 아닙니다.레일즈 3 지연된 작업 - 레일 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 start"및 "script/delayed_job start"둘 다 사용하여 로컬 컴퓨터에서 delayed_job 프로세스를 시작했음을 유의해야합니다. 문제를 해결할 수도 없습니다.

+0

'method_call '이 무엇인지 알려주세요. –

답변

0

delayed_job과 관련없는 것으로 나타났습니다.

관련 문제