# lib/tasks/test.rake
task :hello do
puts 'hello'
end
$ rake 应用程序:你好
要运行任务,我需要在它前面加上“app:”,它在虚拟应用程序的上下文中运行。它还以rake hello
.
我想运行一个不需要 Rails 环境并运行一些命令的 rake 任务,但它是从引擎根目录运行的,而不是从虚拟应用程序根目录运行的。
# lib/tasks/test.rake
task :hello do
puts 'hello'
end
$ rake 应用程序:你好
要运行任务,我需要在它前面加上“app:”,它在虚拟应用程序的上下文中运行。它还以rake hello
.
我想运行一个不需要 Rails 环境并运行一些命令的 rake 任务,但它是从引擎根目录运行的,而不是从虚拟应用程序根目录运行的。
我知道这有点晚了,但是对于在这里寻找正确答案的其他人,请执行以下操作:
创建你的任务:
# lib/tasks/your_engine_tasks.rake
desc "Explaining what the task does"
task :your_task do
# Task goes here
end
然后转到您的引擎 ./Rakefile 并添加
load 'lib/tasks/your_engine_tasks.rake'
我们开始吧,现在:
$ rake -T
给你你的任务。
希望我有所帮助。
我想要一个更好的答案来回答这个问题,但是我确实发现您可以在引擎的 Rakefile 中添加任务(因此 ./Rakefile 不在规范/虚拟应用程序中),如下所示:
task :my_task do
puts "hi!"
end
task :default => [:spec, :my_task]
我更愿意将我的任务放在另一个文件中,但至少这提供了一种前进的方式。就我而言,我想在虚拟应用程序中运行 Konacha javascript 测试,所以我的 Rakefile 看起来像这样:
task :spec_javascript do
exec 'cd spec/dummy && rake konacha:run' # exec passes command return value up stack!
end
task :default => [:spec, :spec_javascript]