如何將命令行參數傳遞給rake任務我有一個rake任務,需要將一個值插入到多個數據庫中。我希望將這個值從命令行傳遞到rake任務,或者從另一個耙任務。我該怎么做?
3 回答

慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
namespace :thing do desc "it does a thing" task :work, [:option, :foo, :bar] do |task, args| puts "work", args end task :another, [:option, :foo, :bar] do |task, args| puts "another #{args}" Rake::Task["thing:work"].invoke(args[:option], args[:foo], args[:bar]) # or splat the args # Rake::Task["thing:work"].invoke(*args) endend
rake thing:work[1,2,3]=> work: {:option=>"1", :foo=>"2", :bar=>"3"}rake thing:another[1,2,3]=> another {:option=>"1", :foo=>"2", :bar=>"3"}=> work: {:option=>"1", :foo=>"2", :bar=>"3"}
注:可變 task
是任務對象,除非您了解/關心Rake內部組件,否則不會很有幫助。
Rails注:
如果從Rails運行任務,最好通過添加 => [:environment]
這是一種設置 相依任務。
task :work, [:option, :foo, :bar] => [:environment] do |task, args| puts "work", args end

心有法竹
TA貢獻1866條經驗 獲得超5個贊
require 'rake'task :my_task, [:arg1, :arg2] do |t, args| puts "Args were: #{args}"endtask :invoke_my_task do Rake.application.invoke_task("my_task[1, 2]")end# or if you prefer this syntax...task :invoke_my_task_2 do Rake::Task[:my_task].invoke(3, 4)end# a task with prerequisites passes its # arguments to it prerequisitestask :with_prerequisite, [:arg1, :arg2] => :my_task #<- name of prerequisite task# to specify default values, # we take advantage of args being a Rake:: TaskArguments objecttask :with_defaults, :arg1, :arg2 do |t, args| args.with_defaults(:arg1 => :default_1, :arg2 => :default_2) puts "Args with defaults were: #{args}"end
> rake my_task[1,2] Args were: {:arg1=>"1", :arg2=>"2"} > rake "my_task[1, 2]" Args were: {:arg1=>"1", :arg2=>"2"} > rake invoke_my_task Args were: {:arg1=>"1", :arg2=>"2"} > rake invoke_my_task_2 Args were: {:arg1=>3, :arg2=>4} > rake with_prerequisite[5,6] Args were: {:arg1=>"5", :arg2=>"6"} > rake with_defaults Args with defaults were: {:arg1=>:default_1, :arg2=>:default_2} > rake with_defaults['x','y'] Args with defaults were: {:arg1=>"x", :arg2=>"y"}
task :t1 => "dep[1,2]"
:invoke_my_task
:invoke_my_task_2
.
rake my_task\['arg1'\]

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
ENV
rake
rake mytask var=foo
p ENV['var'] # => "foo"
- 3 回答
- 0 關注
- 686 瀏覽
添加回答
舉報
0/150
提交
取消