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

Pla*_*Ton 18 rake ruby-on-rails

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

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

rails generate rspec:install && rails generate model test_model title:string && rake db:migrate
Run Code Online (Sandbox Code Playgroud)

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

Gra*_*age 30

看一下rails-sh gem - 它启动Rails环境,然后提供一个命令行界面,这样你就可以在其中运行命令.使用它时有一些限制(我认为你不能改变你的RAILS_ENV),但对于你的用例,它应该是完美的.

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

rake db:migrate && rake db:test:clone_structure
Run Code Online (Sandbox Code Playgroud)

会成为

rake db:migrate db:test:clone_structure
Run Code Online (Sandbox Code Playgroud)

  • 注意:将Rake任务与空格分开似乎就像Bash运算符`&&`,如答案所暗示的那样 - 而不是`;`运算符.如果先前的任务完成且没有错误,则空格分隔仅运行任务.如果在`test`任务期间没有测试失败,`bundle exec rake test cucumber`只运行`cucumber`任务. (5认同)