Ruby on rails Rails如何运行rake任务
如何在终端/控制台中运行此rake文件 我的statistik.rake在lib/tasks中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 .
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中,上述方法不起作用
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