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

时间:2011-01-28 10:04:55

标签: console rake

我想从控制台调用我的rake任务。它可行吗?如果有,怎么办?

我在控制台上尝试了这个:

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

但它给了我这个错误:

RuntimeError: Don't know how to build task

就像耙子找不到任务一样。

任何帮助将不胜感激。

谢谢

编辑:我正在使用rails 2.3.5

5 个答案:

答案 0 :(得分:146)

运行Rake任务需要两个步骤:

  1. 正在加载 Rake
  2. 加载佣金任务
  3. 你错过了第二步。

    通常这是在Rakefile中完成的,但你必须在这里手动完成:

    require 'rake'
    Rails.application.load_tasks # <-- MISSING LINE
    Rake::Task['my_task'].invoke
    

答案 1 :(得分:14)

最简单的方法是从irb运行%x [ command ]。我不确定你想要实现的目标。

%x[rake db:migrate]

编辑:我强烈建议您使用.invoke,丹尼尔在接受的答案中说。

答案 2 :(得分:5)

简单的方法是:

Rails.application.load_tasks
Rake::Task['my_task'].invoke

答案 3 :(得分:1)

请注意,如果您通过rails c在Rails控制台中,则可以通过irb(main):001:0> TaskClassName.new.my_task调用/运行rake任务方法

答案 4 :(得分:1)

我正在使用rails 5.x.x,并且需要使用相同的rails console格式。
我在这里创建了rake任务-

app/lib/task_to_execute.rake

这是为我工作的命令-

加载Rails.application.load_tasks

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

为我工作!