我想从控制台调用我的 rake 任务。可行吗?如果是的话,该怎么做?
我在控制台上尝试过:
require 'rake'
Rake::Task['my_task'].invoke
但它给了我这个错误:
RuntimeError: Don't know how to build task
就像耙子找不到任务一样。
如有任何帮助,我们将不胜感激。
谢谢你
编辑:我正在使用rails 2.3.5
运行 Rake 任务需要两个步骤:
你错过了第二步。
通常这是在 Rakefile 中完成的,但你必须在这里手动完成:
require 'rake'
Rails.application.load_tasks # <-- MISSING LINE
Rake::Task['my_task'].invoke
最简单的方法是从 irb 运行 %x[command]。我不确定你是否想实现什么目标。
%x[rake db:migrate]
编辑:我强烈建议使用
.invoke
,正如丹尼尔在接受的答案中所说。
最简单的方法是:
Rails.application.load_tasks
Rake::Task['my_task'].invoke
我正在使用
rails 5.x.x
,并且需要做同样的表格 rails console
。app/lib/task_to_execute.rake
这是对我有用的命令-
加载
Rails.application.load_tasks
Rake::Task['task_to_execute:task_name'].invoke
为我工作!
请注意,如果您通过
rails c
在 Rails 控制台中,则可以通过 irb(main):001:0> TaskClassName.new.my_task
调用/运行 rake 任务方法
如果您不使用 Rails:
require 'rake'
rake = Rake::Application.new
rake.load_rakefile
还有
Rake::Task.tasks
返回所有已加载任务的列表Rake::Application::DEFAULT_RAKEFILES
保存默认的查找文件名。