题 Rails:一次运行多个rake任务?


一直爱着铁路,但仍然在努力从命令行运行任务需要多长时间。

我想知道是否可以在不重新加载环境的情况下组合多个rake任务。例如,如果我跑

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

它将花费10秒加载rails来运行rspec安装,然后另外10秒加载环境以生成模型,然后另一个用于迁移。有没有办法让所有3个命令保持相同的环境?


14
2017-09-14 13:15


起源




答案:


看看吧 轨-SH gem - 它启动Rails环境,然后提供命令行界面,以便您可以在其中运行命令。使用它时有一些限制(我认为你不能改变你的RAILS_ENV),但对于你的用例,它应该是完美的。

如果你的命令只是rake任务,你可以使用空格来分隔它们,例如:

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

会成为

rake db:migrate db:test:clone_structure

24
2017-09-14 13:33



注意:将Rake任务与空格分开似乎就像Bash运算符一样 &&,正如答案所暗示的那样 - 不是 ; 运营商。如果先前的任务完成且没有错误,则空格分隔仅运行任务。 bundle exec rake test cucumber 只运行 cucumber 如果没有测试失败的任务 test 任务。 - Rory O'Kane
空间分离并不完全等同于 &&,或者。在我的代码的一个版本中, bundle exec rake test cucumber 使一些黄瓜测试失败,但是 bundle exec rake test && bundle exec rake cucumber 让所有测试通过。 (这可能与如何相关 bundle exec cucumber (不 rake)有时,但并不总是,在某个版本的代码上也会使某些测试失败。) - Rory O'Kane