如何在Rails 5中运行默认的rake任务?

时间:2018-11-09 18:59:18

标签: ruby-on-rails rspec rake rakefile

这是某人的上篮...

在Rails中返回<= 4天,由于Rakefile中的默认设置,我们只需在命令行输入$ rake即可运行测试套件:

task default: [:rubocop, :spec, :teaspoon]

但是在Rails 5中,由于rake已被rails取代,如何运行默认的rake任务并不太明显。仅rails给出了rails响应但不运行规范的可能命令的列表。 rails test似乎合乎逻辑,但是它试图运行我们不使用的minitest。 rails spec将运行Rspec,但不会运行 teaspoon rubocop

这去哪儿了?为什么为什么这么简单的东西看起来如此简单以至于我很难抬头看自己?

2 个答案:

答案 0 :(得分:1)

orig target <http://www.example.com/#Marty> <http://www.example.com/#Eugene> <http://www.example.com/#Marty> <http://www.example.com/#Mike> 在Rails 5.2.1上为我执行了这些任务,尽管我在任何地方都找不到它。

答案 1 :(得分:0)

只需创建一个新的rake任务即可运行其他任务:

lib /任务/my_extensions.rake
task :my_test do
  Rake::Task[:foo].invoke
  Rake::Task[:bar].invoke
end
# or the short version:
# task my_test: [:foo, :bar]

task :foo do
  puts "FOO"
end

task :bar do
  puts "BAR"
end

运行rails my_test,您将在控制台中看到FOOBAR打印。

如果您不知道在何处将文件放置在上面的代码中,请检查您的/Rakefile

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require_relative 'config/application'

Rails.application.load_tasks

它表示将它们写在lib/tasks内并以.rake结尾,则不需要它们。在您的特定问题中,将我的代码从:foo:bar更改为您的特定任务:rubocop :spec :teaspoon

但是,看来您正在执行某些BDD或TDD周期。查看rails Guard,它可能会为您提供更好的帮助。我在项目中使用了它,并且效果很好。