繁体   English   中英

Rails 如何运行 rake 任务

[英]Rails how to run rake task

如何在终端/控制台中运行这个 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 任务不会在控制台中加载,在这种情况下,您可以尝试以下命令

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

您是否尝试过rake reklamer:iqmedier

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

如果您不确定如何运行 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 中,上述方法不起作用。

  1. 前往航站楼。
  2. 将目录更改为您的 rake 文件所在的位置。
  3. 运行 rake task_name。
  4. 在上述情况下,运行 rake iqmedier - 将仅运行 iqmedir 任务。
  5. 运行 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

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

你必须添加

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

在文件的顶部。

YourAppName来自config/applicaion.rb YourAppName ,它被定义为一个命名空间,例如:

module YourAppName
  class Application < Rails::Application
  end
end

然后你可以使用

Rake::Task["task_name"].invoke

调用您的任务。

这是一个很好的关于运行rake任务的教程,对我有帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM