Как запустить грабли из консоли? - PullRequest
68 голосов
/ 28 января 2011

Я хочу вызвать грабли из консоли. Это выполнимо? если да, то как это сделать?

Я попробовал это на консоли:

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

но это дает мне эту ошибку:

RuntimeError: Don't know how to build task

как будто грабли не могут найти задачу.

любая помощь будет оценена.

Спасибо

Редактировать: я использую рельсы 2.3.5

Ответы [ 5 ]

150 голосов
/ 08 апреля 2012

Для запуска задач Rake требуется два шага:

  1. Загрузка Рейк
  2. Загрузка Задачи Rake

Вы пропустили второй шаг.

Обычно это делается в Rakefile, но вы должны сделать это вручную здесь:

require 'rake'
Rails.application.load_tasks # <-- MISSING LINE
Rake::Task['my_task'].invoke
14 голосов
/ 02 февраля 2011

Самый простой способ сделать это - запустить команду% x [ ] из irb. Хотя я не уверен, чего ты хочешь достичь.

%x[rake db:migrate]

РЕДАКТИРОВАТЬ: Я настоятельно рекомендую использовать .invoke, как говорит Даниэль в принятом ответе.

5 голосов
/ 22 августа 2018

Простой способ:

Rails.application.load_tasks
Rake::Task['my_task'].invoke
1 голос
/ 17 января 2019

Я использую rails 5.x.x, и мне нужно было сделать ту же форму rails console.
У меня есть задача создания граблей здесь -

app/lib/task_to_execute.rake

Вот команда, сработавшая для меня -

Нагрузка Rails.application.load_tasks

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

Работал на меня!

1 голос
/ 14 сентября 2018

Просто обратите внимание, что если вы находитесь в консоли rails через rails c, вы можете просто вызвать / запустить метод задачи rake с помощью irb(main):001:0> TaskClassName.new.my_task

...