Как мне получить: Задача Rake по умолчанию зависит от задачи с аргументами?

Я играл с Rake и Albacore, чтобы посмотреть, могу ли я заменить наш существующий сценарий MSBuild, который развертывает программное обеспечение, чем-то, кроме XML. У меня есть задача, которая изменит значение отладки внутри web.config на false . Задача принимает в качестве аргумента каталог web.config , но я не могу понять синтаксис, необходимый для предоставления этого аргумента в задаче по умолчанию.

require 'albacore'
require 'nokogiri'

deployment_path = 'c:/test-mars-deploy'

task :default => [ :build, :publish, :update_web_config['c:/test-mars-deploy'] ]

task :update_web_config, :deploy_path do |t, args|  
  deployment_path = #{args[:deploy_path]}
  web_config_path = File.join deployment_path, 'Web.config'

  File.open(web_config_path, 'r+') do |f|
    doc = Nokogiri::XML(f)
    puts 'finding attribute'
    attribute = doc.xpath('/configuration/system.web/compilation')
    attribute.attr('debug', 'false')
    puts attribute.to_xml
  end

  File.delete(web_config_path)

  File.new(web_config_path, 'w') do |f|
    f.write(doc.to_s)
  end
end
1
задан Anthony Mastrean 9 October 2012 в 21:25
поделиться

2 ответа

Я думаю, вам, возможно, придется использовать передачу параметров в старом стиле, например:

nicholas@hal:/tmp$ cat Rakefile
task :default => :all

deploy_path = ENV['deploy_path'] || "c:/some_path"

task :all do |t, args|
    puts deploy_path.inspect
end

И вызывать с помощью:

nicholas@hal:/tmp$ rake
(in /tmp)
"c:/some_path"

Или, чтобы переопределить путь:

nicholas@hal:/tmp$ rake deploy_path=c:/other_path
(in /tmp)
"c:/other_path"
0
ответ дан 2 September 2019 в 22:13
поделиться

в основном вы называете свои аргументы как дополнительные символы после имени задачи. параметр args будет передан в блок, который отвечает на имя ваших аргументов, и вы можете вызвать задачу, передав аргументы в квадратных скобках ([])

ree-1.8.7-2010.02@rails3 matt@Zion:~/setup$ cat lib/tasks/blah.rake 
task :blah, :n do |t, args|
  puts args.n
end
ree-1.8.7-2010.02@rails3 matt@Zion:~/setup$ rake blah[20]
(in /home/matt/setup)
20
0
ответ дан 2 September 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: