我有一個Rails 3 gem,它有一些只能在測試環境中運行的rake任務。在其他環境中運行並不合理。在測試環境中自動運行gem任務
我的問題是Rake加載Rails系統,以便在我的寶石中找到我的任務。所以當它到達我的任務時,Rails已經加載到「開發」環境中(或用戶指定的任何環境)。這意味着,爲了運行我的Rake任務正確的用戶必須做到:
RAILS_ENV=test rake mytask
由於我的任務只是使「測試」環境某種意義上說,這是惱人的,因爲我寧願用戶能夠只需鍵入:
rake mytask
這類似於如何測試:單元和測試:泛函自動假設測試環境和用戶不需要在命令行來指定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
天才!簡單並解決了我需要分叉的另一個問題,以避免一個任務與另一個任務相混淆。希望我有一些觀點,所以我可以給你一個很好的答案。我確實給你在提交信貸: https://github.com/eric1234/test_inline/commit/fe3da7efa3a2cdb7824c23cfa41697b0ceb9e8e2 – 2011-01-29 17:23:48