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

问题描述 投票:0回答:6

我想从控制台调用我的 rake 任务。可行吗?如果是的话,该怎么做?

我在控制台上尝试过:

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

但它给了我这个错误:

RuntimeError: Don't know how to build task

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

如有任何帮助,我们将不胜感激。

谢谢你

编辑:我正在使用rails 2.3.5

console rake
6个回答
256
投票

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

  1. 加载耙子
  2. 加载您的 Rake 任务

你错过了第二步。

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

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

18
投票

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

%x[rake db:migrate]

编辑:我强烈建议使用

.invoke
,正如丹尼尔在接受的答案中所说。


17
投票

最简单的方法是:

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

7
投票

我正在使用

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

为我工作!


2
投票

请注意,如果您通过

rails c
在 Rails 控制台中,则可以通过
irb(main):001:0> TaskClassName.new.my_task

调用/运行 rake 任务方法

0
投票

如果您不使用 Rails:

require 'rake'

rake = Rake::Application.new
rake.load_rakefile

还有

  • Rake::Task.tasks
    返回所有已加载任务的列表
  • Rake::Application::DEFAULT_RAKEFILES
    保存默认的查找文件名。
© www.soinside.com 2019 - 2024. All rights reserved.