簡體   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