如何在 Rails 5 中 运行 默认 rake 任务?
How to run default rake tasks in Rails 5?
这是某人的上篮...
回到 Rails <= 4 天,我们 运行 我们的测试套件只需在命令行键入 $ rake
,这要归功于 Rakefile 中的默认设置:
task default: [:rubocop, :spec, :teaspoon]
但在 Rails 5 中,现在 rake
已被 rails
取代,如何 运行 默认 rake 任务并不那么明显。 rails
单独给出了可能的命令列表 rails 响应但不 运行 规范。 rails test
似乎合乎逻辑,但它试图 运行 我们不使用的最小测试。 rails spec
会 运行 Rspec 但不会 teaspoon 或 rubocop。
这是去哪儿了?为什么看起来如此简单的事情对我自己来说却如此困难?
rails default
在 Rails 5.2.1 上为我执行这些任务,尽管我在任何地方都找不到它的记录。
只需创建一个新的 rake
任务来运行其他任务:
lib/tasks/my_extensions.耙
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
并且您将在控制台中看到 FOO
和 BAR
。
如果您不知道在哪里放置文件来编写上面的代码,请检查您的/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
结尾,不需要require。在您的特定问题中,将我的代码从 :foo
和 :bar
更改为您的特定任务 :rubocop :spec :teaspoon
.
但是,您似乎正在进行一些 BDD 或 TDD 循环。查看 rails Guard,它可能对您有更好的帮助。我在我的项目中使用它并且它运行良好。
这是某人的上篮...
回到 Rails <= 4 天,我们 运行 我们的测试套件只需在命令行键入 $ rake
,这要归功于 Rakefile 中的默认设置:
task default: [:rubocop, :spec, :teaspoon]
但在 Rails 5 中,现在 rake
已被 rails
取代,如何 运行 默认 rake 任务并不那么明显。 rails
单独给出了可能的命令列表 rails 响应但不 运行 规范。 rails test
似乎合乎逻辑,但它试图 运行 我们不使用的最小测试。 rails spec
会 运行 Rspec 但不会 teaspoon 或 rubocop。
这是去哪儿了?为什么看起来如此简单的事情对我自己来说却如此困难?
rails default
在 Rails 5.2.1 上为我执行这些任务,尽管我在任何地方都找不到它的记录。
只需创建一个新的 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
并且您将在控制台中看到 FOO
和 BAR
。
如果您不知道在哪里放置文件来编写上面的代码,请检查您的/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
结尾,不需要require。在您的特定问题中,将我的代码从 :foo
和 :bar
更改为您的特定任务 :rubocop :spec :teaspoon
.
但是,您似乎正在进行一些 BDD 或 TDD 循环。查看 rails Guard,它可能对您有更好的帮助。我在我的项目中使用它并且它运行良好。