如何从控制台运行 rake 任务?

我想从控制台调用我的 rake 任务。它是否可行? 如果是,如何做到这一点?

我在控制台上试过这个:

require 'rake'
Rake::Task['my_task'].invoke

但它给了我这个错误:

RuntimeError: Don't know how to build task

就好像耙子找不到任务。

any help would be appreciated.

谢谢你

编辑: 我正在使用 Rails2.3.5

64200 次浏览

最简单的方法是从 irb 运行% x [ 指挥官]。但我不确定你想达到什么目的。

%x[rake db:migrate]

编辑: 我强烈推荐使用 .invoke,正如丹尼尔在公认的答案中所说的那样。

Running your Rake tasks requires two steps:

  1. 装载 耙子
  2. 正在加载 Rake tasks

你错过了第二步。

通常这是在 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 5.x.x,并在需要的时候做同样的表格 rails console
我在这里创建了耙子任务-

app/lib/task_to_execute.rake

这是为我工作的命令-

装载 Rails.application.load_tasks

Rake::Task['task_to_execute:task_name'].invoke

对我有用!