2010-12-03 15 views
0

私は、テスト環境でのみ実行すべきいくつかのレーキタスクを持つRails 3 gemを持っています。他の環境で動作させることは実際には意味がありません。テスト環境で自動的にgemタスクを実行する

私の問題は、私の宝石で自分の仕事を見つけるためにRailsシステムをロードすることです。だから私の仕事になるまでに、Railsはすでに "開発"環境(またはユーザが指定した環境)にロードされています。これは、ユーザーが行う必要があり、適切に私のすくいタスクを実行するために、意味:

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

答えて

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

Jamie Wongへの最後のコメントはhttp://stackoverflow.com/questions/3596431/element-update-関数ではない3-jquery/3611339#3611339 –

関連する問題