Ruby on rails Rails如何运行rake任务

Ruby on rails Rails如何运行rake任务,ruby-on-rails,ruby,rake,Ruby On Rails,Ruby,Rake,如何在终端/控制台中运行此rake文件 我的statistik.rake在lib/tasks中 desc "Importer statistikker" namespace :reklamer do task :iqmedier => :environment do ... end task :euroads => :environment do ... end task :mikkelsen => :environment do .

如何在终端/控制台中运行此rake文件

我的statistik.rake在lib/tasks中

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

你试过rake-reklamer:iqmedier吗


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

您可以通过运行以下命令从shell运行Rake任务:

rake task_name
从Ruby运行(例如,在Rails控制台或其他Rake任务中):

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

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


在rails 4.2中,上述方法不起作用

  • 去候机楼
  • 将目录更改为rake文件所在的位置
  • 运行rake任务\u name
  • 在上述情况下,运行rake iqmedier-将仅运行iqmedir任务
  • 运行rake euroads-将仅运行euroads任务
  • 要运行该文件中的所有任务,请在 相同的文件并运行rake all

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

  • 有时您的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
    运行任务。

    如和所述

    你必须加上

    require'rake'
    Rake::Task.clear
    YourAppName::Application.load\u任务
    
    在文件的顶部

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

    module YourAppName
      class Application < Rails::Application
      end
    end
    

    调用您的任务。

    我想一次运行所有任务如何一次搜索所有任务,还是需要将名称空间更改为任务?如果您想一次运行所有任务,请生成task:all=>[:a,:b,:c],然后运行rake-reklamer:all这不是您问题的一部分,但您必须生成一个调用每个任务的新任务,这里有一个缩写。查看我的更新答案。@Andrew Marshall,顺便说一句,如果要运行所有任务,可以使用
    task:runall=>Rake::task.tasks
    。但是这一行必须在所有任务之后声明。任务应该在哪里:runall=>go?这种方法会起作用,但是@andrew-marshall回答了捆绑raks任务的“正确”方法。如果您想说“正确”方法,请提供参考。我的回答是对原始问题的回答。作为一个理论测试,我尝试运行
    Rake::Task['db:seed']。调用
    但它没有运行,说“不知道如何构建任务'db:seed'”。这些引号不好,但我无法编辑它们,因为编辑太小了!尽管这不是对所问问题的真正答案。这就是我一直在寻找和解决的问题(YourApp::Application.load\u tasks)。谢谢
    
    require "rake"
    YourApp::Application.load_tasks
    Rake::Task["Namespace:task"].invoke
    
    rake gobble:dev:prime             
    rake gobble:dev:reset_number_of_kits                                    
    rake gobble:dev:scrub_prod_data
    
    module YourAppName
      class Application < Rails::Application
      end
    end