如何为未向主机应用程序公开的 Rails 引擎创建 rake 任务?

Kri*_*ris 5 rake ruby-on-rails-plugins ruby-on-rails-3 ruby-on-rails-3.1

# lib/tasks/test.rake
task :hello do
  puts 'hello'
end
Run Code Online (Sandbox Code Playgroud)

$ rake 应用程序:你好

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

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

小智 9

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

创建您的任务:

# lib/tasks/your_engine_tasks.rake
desc "Explaining what the task does"
task :your_task do
  # Task goes here
end
Run Code Online (Sandbox Code Playgroud)

然后转到你的引擎 ./Rakefile 并添加

load 'lib/tasks/your_engine_tasks.rake'
Run Code Online (Sandbox Code Playgroud)

现在我们开始吧:

$ rake -T
Run Code Online (Sandbox Code Playgroud)

给你你的任务。

希望我有所帮助。