我一直在玩弄Rake和Albacore,看看我能否替換我們現有的MSBuild腳本,它部署的軟件不是XML。我有一個任務會將web.config
中的調試值更改爲false
。該任務將web.config
的目錄作爲參數,但我無法完全弄清楚在默認任務中提供此參數所需的語法。我如何擁有:default rake任務取決於具有參數的任務?
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
我設法重構我的代碼,所以它使用這種方法通過批處理文件運行。 – 2010-08-12 14:42:58
@丹:你可以評論你爲什麼需要一個批處理文件? – ngoozeff 2010-08-12 16:47:45
我發佈的代碼片段並不是真的需要它,但是在我的實際代碼中,我有一些任務在一個文件中構建了幾個不同的項目。我大概可以將它們分成單獨的文件,但是在我的紅寶石學習中我還沒有那麼深入。 – 2010-08-13 07:51:43