2011-04-12 2 views
56

Как запустить этот файл рейка в терминале/консоли?Рельсы, как запускать команду rake

мой statistik.rake в Lib/задачи

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 

ответ

86

Вы не должны быть запущены задачи Rake в консоли Rails, но вместо этого в строке Terminal/Command, запустив

rake task_name 

Если вы действительно должны запустить Рейк задачу в Ruby, вы должны быть в состоянии:

Rake::Task['task_name'].invoke 

, но это обычно делается только в задании на рейк, чтобы запустить другой.

Для выполнения нескольких задач в одном пространстве имен с одной задачей, создать следующую новую задачу в пространстве имен:

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

Как мне сразу же использовать все задачи или мне нужно изменить пространство имен на задачу? –

+1

Если вы хотите запустить все задачи сразу, выполните задачу: all => [: a,: b,: c], а затем запустите rake reklamer: all –

+1

Это не было частью вашего вопроса, но вам нужно будет создайте новую задачу, которая вызывает каждую из них, для которой есть сокращение. См. Мой обновленный ответ. –

18

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

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

+1

Я хочу, чтобы запустить все задачи сразу –

+0

Вместо ввода грабель reklamer: iqmedier, rake reklamer: euroads .... –

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

или

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

Этот подход будет работать, но «правильный» способ связывания задач raks ответил @ andrew-marshall. –

+3

, пожалуйста, укажите ссылку, если вы собираетесь сказать что-то вроде «правильного» способа ... ». мой ответ был ответом на исходный вопрос. –

+2

В качестве теоретического теста я попробовал запустить «Rake :: Task ['db: seed»]. Invoke', но он не запускается, говоря «Не знаю, как построить задачу» db: seed » – lulalala

1

В рельсах 4.2 вышеуказанные методы не работают.

  1. Перейти к Терминалу.
  2. Измените каталог в том месте, где присутствует ваш файл рейка.
  3. запустить rake task_name.
  4. В приведенном выше примере запустите rake iqmedier - запустите только задачу iqmedir.
  5. Запуск rake euroads - будет выполняться только задача euroads.
  6. Чтобы выполнить все задачи в этом файле присвоить следующие внутри же файл и запустить грабли всех

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end 
    
Смежные вопросы