Rails如何运行rake任务

时间:2011-04-12 21:16:58

标签: ruby-on-rails ruby 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

8 个答案:

答案 0 :(得分:106)

您不应该在Rails控制台中运行Rake任务,而是在运行

的终端/命令提示符中运行
rake task_name

如果你真的必须在Ruby中运行Rake任务,你应该可以这样做:

Rake::Task['task_name'].invoke

但这通常只在Rake任务本身中完成,以运行另一个。

要使用单个任务在同一命名空间中运行多个任务,请在命名空间中创建以下新任务:

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

答案 1 :(得分:22)

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

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

答案 2 :(得分:20)

您是否尝试过rake reklamer:iqmedier

我的自定义rake任务位于lib目录中,而不是lib / tasks中。不确定这是否重要。

答案 3 :(得分:7)

有时您的rake任务无法在控制台中加载,在这种情况下,您可以尝试以下命令

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

答案 4 :(得分:1)

在rails 4.2中,上述方法无效。

  1. 转到终端。
  2. 将目录更改为rake文件所在的位置。
  3. 运行rake task_name。
  4. 在上面的例子中,运行rake iqmedier - 将只运行iqmedir任务。
  5. run rake euroads - 将只运行euroads任务。
  6. 要运行该文件中的所有任务,请在其中分配以下内容 同一个文件并运行rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    

答案 5 :(得分:1)

https://stackoverflow.com/a/5641807/7262646https://stackoverflow.com/a/49400110/7262646 所述

你必须添加

require 'rake'
Rake::Task.clear
YourAppName::Application.load_tasks

在文件的顶部。

YourAppName 来自config/applicaion.rb,定义为命名空间,如:

module YourAppName
  class Application < Rails::Application
  end
end

然后你就可以使用

Rake::Task["task_name"].invoke

调用您的任务。

答案 6 :(得分:0)

如果您不确定如何运行rake任务,请首先首先找出您拥有的任务,它还会列出运行任务的命令。

在终端上运行rake --tasks

它将列出如下任务:

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

然后您可以使用列出的rake gobble:dev:prime运行任务。

答案 7 :(得分:-1)

这是一个关于运行rake任务的非常好的教程,我发现它很有用..

http://jasonseifer.com/2010/04/06/rake-tutorial