2010-12-03 4 views
0

테스트 환경에서만 실행해야하는 레이크 태스크가있는 Rails 3 gem이 있습니다. 다른 환경에서 실행하는 것은 실제로 의미가 없습니다.테스트 환경에서 gem 태스크를 자동으로 실행합니다.

Rake가 Rails 시스템을로드하여 내 작업을 찾았습니다. 따라서 Rails는 이미 "개발"환경 (또는 사용자가 지정한 환경)에로드되어 있습니다. 이것은 제대로 사용자가 수행해야 내 레이크 작업을 실행하기 위해 의미

RAILS_ENV=test rake mytask 

내 작업 만이 내가 차라리 사용자가 바로 입력 할 수있을 것 같은 짜증나는 "테스트"환경에서 의미가 있기 때문에 :

rake mytask 

이 어떻게 시험과 유사합니다 단위 테스트 : 함수 (Functionals)가 자동으로 테스트 환경을 가정하고 사용자가 명령 줄에서 RAILS_ENV = 테스트를 지정할 필요가 없습니다. 그래서 문제는 Rails가 테스트 환경으로 전환되도록 테스트를 수정하는 방법입니다.

나의 현재 해결 방법은 다음과 같습니다

Rails.env = 'test' 
ActionMailer::Base.delivery_method = :test 
require Rails.root.join('test/test_helper') 

이 다소을 작동하는 것 같다하지만 여전히/development.log 파일을 기록 할 로깅 나는 아직도 실제로 "개발"설정을 실행 생각합니다. 아무도 아이디어가 없나요? Rails 자체에서 테스트 작업을 정의하는 방법을 보면 내가 볼 수있는 방법을 공개하지 않습니다.

https://github.com/rails/rails/blob/master/railties/lib/rails/test_unit/testing.rake

답변

3

UPDATE : 나는 https://github.com/eric1234/test_inline/commit/fe3da7efa3a2cdb7824c23cfa41697b0ceb9e8e2에서 에릭의 구현에서 입력을 복용 후 내 코드 업데이트되었습니다. 원래의 코드를 참조하십시오 - https://stackoverflow.com/posts/4600524/revisions

desc "Do something in Test environment" 
task :example => :environment do 
    if not Rails.env.test? 
    Dir.chdir(Rails.root) do 
     system "rake example RAILS_ENV=test" 
    end 
    else 
    #.... stuff .... 
    end 
end 

내가 코드의 정확성을 확인하지 못했지만, 당신이 바로, 생각을?

+0

Genius! 단순하고 다른 작업으로 어지럽히 지 않은 한 작업을 피하기 위해 포크 할 필요가있는 또 다른 문제를 해결합니다. 소중한 답변을 드리겠습니다. https://github.com/eric1234/test_inline/commit/fe3da7efa3a2cdb7824c23cfa41697b0ceb9e8e2 –

+0

에서 제이미 웡 최근 코멘트 신용 http://stackoverflow.com/questions/3596431/element-update- : 나는 커밋에 당신의 신용을 주셨 는가 is-not-a-function-rails-3-jquery/3611339 # 3611339 –

관련 문제