Rails如何运行rake任务

问题描述

| 如何在终端/控制台中运行此rake文件? 我在lib / tasks中的statistik.rake
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
    

解决方法

您可以通过运行以下命令从Shell运行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
    ,
Rake::Task[\'reklamer:orville\'].invoke
要么
Rake::Task[\'reklamer:orville\'].invoke(args)
    ,你试过
rake reklamer:iqmedier
吗? 我的自定义耙任务位于lib目录中,而不位于lib / tasks中。不确定是否重要。     ,有时您的rake任务没有加载到控制台中,在这种情况下,您可以尝试以下命令
require \"rake\"
YourApp::Application.load_tasks
Rake::Task[\"Namespace:task\"].invoke
    ,如果您不确定如何运行rake任务,请首先首先确定您拥有什么任务,它还将列出用于运行任务的命令。 在终端上运行
rake --tasks
。 它将列出如下任务:
rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data
然后,您可以使用以下命令运行任务:
rake gobble:dev:prime
。     ,在Rails 4.2中,以上方法无效。 转到终端。 将目录更改为您的rake文件所在的位置。 运行rake task_name。 在上述情况下,运行rake iqmedier-将仅运行iqmedir任务。 运行rake euroads-仅运行euroads任务。 要运行该文件中的所有任务,请在 同一文件并全部运行rake
task :all => [:iqmedier,:orville ] do #This will print all the tasks o/p on the screen 
end
    ,这是一个很好的关于运行rake任务的教程,对我有帮助。 http://jasonseifer.com/2010/04/06/rake-tutorial