6
# lib/tasks/test.rake
task :hello do
  puts 'hello'
end

$ rake 应用程序:你好

要运行任务,我需要在它前面加上“app:”,它在虚拟应用程序的上下文中运行。它还以rake hello.

我想运行一个不需要 Rails 环境并运行一些命令的 rake 任务,但它是从引擎根目录运行的,而不是从虚拟应用程序根目录运行的。

4

2 回答 2

5

我知道这有点晚了,但是对于在这里寻找正确答案的其他人,请执行以下操作:

创建你的任务:

# 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

给你你的任务。

希望我有所帮助。

于 2016-07-28T12:15:18.483 回答
4

我想要一个更好的答案来回答这个问题,但是我确实发现您可以在引擎的 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]
于 2012-10-05T00:30:52.590 回答