2014-02-05 126 views
2

我正在使用Capistrano v2.9.0。如何將命令行參數傳遞給capistrano

我運行此命令:

cap deploy:tryout -S testvar=thing 

和我deploy.rb包含此:

namespace :deploy do 
    task :tryout do 
     if defined? testvar 
      puts "param: #{testvar}\n" 
     else 
      puts "no branch!\n" 
     end 
    end 
end 

輸出爲 「無分支!」。如何從命令行傳遞值?我試圖查看代碼,我可以看到options.rb它將傳遞的參數添加到選項[:pre_vars],但似乎是一個實例變量,我無法弄清楚如何從我的部署中訪問它腳本。

+0

是'-S'一個錯字?它應該是'-s'(小寫) – Kashyap

+1

不,根據cap docs,小寫是--set,大寫是--set-before。無論如何,我已經試過了。 – Benubird

+0

重複的:http://stackoverflow.com/questions/10216841/passing-parameters-to-capistrano - 此外,測試變量存在如下所示:https://github.com/capistrano/capistrano/wiki/2。 x-DSL-Configuration-Variables-Exists - 我相信在命令行上設置的變量是以相同的方式測試的。嘗試把你的var放在其他地方,看看會發生什麼。 – juanitogan

回答

0

解決方案:

的選項可以通過@ parent.variables訪問散列,因此,如果在命令行串是testvar=thing,然後@parent.variables[:testvar]具有值string

這看起來確實很醜陋,但卻很有效。

編輯: 原來這也可以通過本地variables[:testvar]

相關問題