我想从控制台调用我的 rake 任务。它是否可行? 如果是,如何做到这一点?
我在控制台上试过这个:
require 'rake' Rake::Task['my_task'].invoke
但它给了我这个错误:
RuntimeError: Don't know how to build task
就好像耙子找不到任务。
any help would be appreciated.
谢谢你
编辑: 我正在使用 Rails2.3.5
最简单的方法是从 irb 运行% x [ 指挥官]。但我不确定你想达到什么目的。
%x[rake db:migrate]
编辑: 我强烈推荐使用 .invoke,正如丹尼尔在公认的答案中所说的那样。
.invoke
Running your Rake tasks requires two steps:
你错过了第二步。
通常这是在 Rakefile 完成的,但你必须在这里手动完成:
require 'rake' Rails.application.load_tasks # <-- MISSING LINE Rake::Task['my_task'].invoke
简单的办法是:
Rails.application.load_tasks Rake::Task['my_task'].invoke
Just a note that if you are in the rails console via rails c you can just call/run the rake task method by irb(main):001:0> TaskClassName.new.my_task
rails c
irb(main):001:0> TaskClassName.new.my_task
我使用的是 rails 5.x.x,并在需要的时候做同样的表格 rails console。 我在这里创建了耙子任务-
rails 5.x.x
rails console
app/lib/task_to_execute.rake
这是为我工作的命令-
装载 Rails.application.load_tasks
Rails.application.load_tasks
Rake::Task['task_to_execute:task_name'].invoke
对我有用!