2011-09-14 10 views
11

愛らしいレールですが、コマンドラインからタスクを実行するのに時間がかかります。Rails:一度に複数のレーキタスクを実行していますか?

毎回環境をリロードせずに複数のレーキタスクを組み合わせることができるのだろうかと思います。例えば、私は

rails generate rspec:install && rails generate model test_model title:string && rake db:migrate 

を実行する場合には、移行のために別の、その後、RSpecのモデルを生成するための環境をロードし、その後、別の10秒をインストールし実行するためにレールをアップロード10秒を過ごすことになります。 3つのコマンドすべてで同じ環境を開いたままにする方法はありますか?

答えて

21

rails-sh gemを見てみましょう - Rails環境を起動し、コマンドラインインターフェイスを表示するので、コマンドを実行することができます。使用する際に制限があります(RAILS_ENVを変更することはできません)が、あなたのユースケースでは完璧でなければなりません。

あなたのコマンドだけでタスクをすくいしている場合は、例えば、それらを分離するためにスペースを使用することができます。

rake db:migrate && rake db:test:clone_structure 

うわー

rake db:migrate db:test:clone_structure 
+0

になる - 私はそれに気づいていなかった唖然よ。素晴らしい、多くのありがとう。 – PlankTon

+2

注:Rakeタスクをスペースで区切ることは、答えが暗示するようにBash演算子 '&&'のように振る舞います。スペース区切りは、前のタスクがエラーなく終了した場合にのみタスクを実行します。 'bundle exec rake test cucumber'は、' test'タスク中にテストが失敗しなかった場合にのみ 'cucumber'タスクを実行します。 –

+0

スペース区切りは '&&'と全く同じではありません。私のコードのあるバージョンでは、 'bundle exec rake test cucumber'はいくつかのキュウリテストを失敗させますが、' bundle exec rake test && bundle exec rake cucumber'はすべてのテストをパスします。 (それは 'bundle exec cucumber'(' rake'なし)が、そのコードのバージョンで時には必ずしもそうではないが、いくつかのテストを失敗させることに関連しているかもしれません。 –

関連する問題