Rails, як запустити завдання rake


95

Як запустити цей файл rake у терміналі / консолі?

мій statistik.rake у lib / tasks

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end

Відповіді:


132

Ви можете запускати завдання Rake зі своєї оболонки, виконуючи:

rake task_name

Щоб запустити з Ruby (наприклад, у консолі Rails або іншому завданні Rake):

Rake::Task['task_name'].invoke

Щоб запустити кілька завдань в одному просторі імен з одним завданням, створіть таке нове завдання у своєму просторі імен:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

1
Як мені згрібати всі завдання одночасно або мені потрібно змінити простір імен на завдання?
Rails для початківців

1
Якщо ви хочете запустити всі завдання одночасно, зробіть task: all => [: a,: b,: c], а потім запустіть rake reklamer: all
Spike Gronim

1
Це не було частиною вашого запитання, але вам доведеться створити нове завдання, яке викликає кожного з них, для чого є скорочення. Дивіться мою оновлену відповідь.
Ендрю Маршалл,

1
@Andrew Marshall, до речі, ти можеш використовувати, task :runall => Rake::Task.tasksякщо хочеш запустити всі завдання. Але цей рядок повинен бути оголошений після всіх завдань.
Василь Єрмолович

Куди має піти завдання: runall =>
Rails для початківців

25
Rake::Task['reklamer:orville'].invoke

або

Rake::Task['reklamer:orville'].invoke(args)

Цей підхід спрацює, але "правильний" спосіб групування завдань raks відповів @ andrew-marshall.
Том Гаррісон,

3
будь ласка, надайте посилання, якщо ви збираєтесь сказати щось на зразок "правильного" шляху ... '. моя відповідь була відповіддю на вихідне запитання.
Luke W

3
В якості теоретичного тесту я спробував запустити, Rake::Task['db:seed'].invokeале він не працює, сказавши "Не знаю, як побудувати завдання 'db: seed'"
lulalala

22

Ви пробували rake reklamer:iqmedier?

Мої користувацькі завдання rake знаходяться в каталозі lib, а не в lib / tasks. Не впевнений, чи це має значення.


1
Я хочу запустити всі завдання відразу
новачок Rails

13

Іноді ваші завдання з граблі не завантажуються в консолі. У такому випадку ви можете спробувати наступні команди

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke

Ці цитати погані, але я не можу їх редагувати, оскільки це занадто маленьке редагування!
nroose

Хоча це не справжня відповідь на поставлене питання. Це те, що я шукав і вирішив свою проблему (YourApp :: Application.load_tasks). Дякую!
Денніс ван де Хоф

4

Якщо ви не впевнені, як запустити завдання rake, спочатку з’ясуйте, які у вас є завдання, і в ньому також будуть перелічені команди для запуску завдань.

Запустити rake --tasksна терміналі.

У ньому будуть перелічені такі завдання, як наступні:

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

Потім ви можете запустити своє завдання за допомогою: rake gobble:dev:primeяк вказано.


1

У рейках 4.2 вищезазначені методи не працювали.

  1. Йдіть до терміналу.
  2. Змініть каталог на місце, де присутній ваш файл граблі.
  3. запустити граблі ім'я_задачі.
  4. У наведеному вище випадку запустіть rake iqmedier - буде виконуватися лише завдання iqmedir.
  5. запустити граблі euroads - буде виконувати лише завдання euroads.
  6. Для запуску всіх завдань у цьому файлі призначте наступне всередині того самого файлу та запустіть rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.