我想从控制台调用我的rake任务。它可行吗?如果有,怎么办?
我在控制台上尝试了这个:
require 'rake'
Rake::Task['my_task'].invoke
但它给了我这个错误:
RuntimeError: Don't know how to build task
就像耙子找不到任务一样。
任何帮助将不胜感激。
谢谢
编辑:我正在使用rails 2.3.5
答案 0 :(得分:146)
运行Rake任务需要两个步骤:
你错过了第二步。
通常这是在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
为我工作!