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

发布于 2024-10-14 14:47:20 字数 334 浏览 3 评论 0原文

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

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

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

但它给了我这个错误:

RuntimeError: Don't know how to build task

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

任何帮助将不胜感激。

谢谢

编辑:我正在使用rails 2.3.5

I want to invoke my rake task from console. Is it doable? if yes, how to do so?

I tried this on console:

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

but it give me this error:

RuntimeError: Don't know how to build task

it's like the rake cannot found the task.

any help would be appreciated.

Thank you

Edit: I am using rails 2.3.5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

关于从前 2024-10-21 14:47:20

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

  1. 加载 Rake
  2. 加载 Rake 任务

您缺少第二步。

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

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

Running your Rake tasks requires two steps:

  1. Loading Rake
  2. Loading your Rake tasks

You are missing the second step.

Normally this is done in the Rakefile, but you have to do it manually here:

require 'rake'
Rails.application.load_tasks # <-- MISSING LINE
Rake::Task['my_task'].invoke
像极了他 2024-10-21 14:47:20

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

%x[rake db:migrate]

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

The easiest way to do it is to run %x[command] from the irb. I'm not sure if what you want to achieve though.

%x[rake db:migrate]

EDIT: I highly recommend to use .invoke as Daniel says in the accepted answer.

屋顶上的小猫咪 2024-10-21 14:47:20

简单的方法是:

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

The easy way is:

Rails.application.load_tasks
Rake::Task['my_task'].invoke
自由如风 2024-10-21 14:47:20

我正在使用 rails 5.xx,并且需要执行相同的表单 rails console
我在这里创建了 rake 任务 -

app/lib/task_to_execute.rake

这是对我有用的命令

- Load Rails.application.load_tasks

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

对我有用!

I am using rails 5.x.x, and was in the need the do the same form rails console.
I have create rake task here-

app/lib/task_to_execute.rake

Here is the command worked for me-

Load Rails.application.load_tasks

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

Worked for me!

停顿的约定 2024-10-21 14:47:20

请注意,如果您通过 rails c 进入 Rails 控制台,您只需通过 irb(main):001:0> 调用/运行 rake 任务方法即可。 TaskClassName.new.my_task

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

一指流沙 2024-10-21 14:47:20

如果您使用Rails:

require 'rake'

rake = Rake::Application.new
rake.load_rakefile

Rake::Task['some_task_from_rakefile'].execute

此外,

  • Rake::Task.tasks 返回所有已加载任务的列表。
  • Rake::Application::DEFAULT_RAKEFILES 保存默认的查找文件名。

PS 我知道作者要求 Rails 解决方案,但我找不到更好的地方来放置它。

If you do not use Rails:

require 'rake'

rake = Rake::Application.new
rake.load_rakefile

Rake::Task['some_task_from_rakefile'].execute

Also,

  • Rake::Task.tasks returns the list of all loaded tasks.
  • Rake::Application::DEFAULT_RAKEFILES holds the default lookup file names.

P.S. I am aware that the author asked for Rails solution, but I couldn't find any better place where to put this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文