2015-02-07 66 views
0

我有一個Capistrano部署需要通過使用Ruby反引號調用Heroku工具欄來獲取數據庫URL(使用部署機器,而不是目標),即heroku pgbackups:url --app strong-galaxy-5765。我已經在Capistrano 2下做了幾個月,但現在升級到Ruby 2.2和Cap 3後,在Capistrano任務中使用Ruby反引號調用heroku命令會產生一個空白字符串。這不僅僅是這個特別的命令:即使'heroku --version'也不會返回任何結果。爲什麼Heroku客戶端CLI不能在Capistrano下工作?

數據點: *標準shell命令反撥,併產生相應的輸出 *如果給出'heroku'命令的絕對路徑,行爲是相同的。 * whoami顯示Capistrano任務下的用戶是我。 *我已經在帶反引號的通用Ruby腳本中嘗試過的所有heroku命令都正常工作。 *一切正常,直到我切換到卡皮斯特拉諾3和紅寶石2.2

所以肯定有一些關於Capistrano環境,我爬牆試圖找出它會是什麼。一個可能的線索:運行'heroku'命令時,我從Capistrano任務中得到以下錯誤輸出:

/Users/upstill/.rvm/gems/[email protected]/gems/bundler-1.7。 12/lib/bundler/definition.rb:380:在validate_ruby!': Your Ruby version is 1.9.3, but your Gemfile specified 2.2.0 (Bundler::RubyVersionMismatch) from /Users/upstill/.rvm/gems/[email protected]/gems/bundler-1.7.12/lib/bundler.rb:118:in設置' from /Users/upstill/.rvm/gems/[email protected]/gems/bundler-1.7.12/lib/bundler/setup。 rb:17:在<top (required)>' from /usr/local/heroku/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in中需要來自/usr/local/heroku/ruby/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'要求'的' INFO'heroku pgbackups:url --app strong -galaxy-5765' =>(pid 46786 exit 1)

注意:我的Ruby環境是2.2.0,如ALL OF my Gemfile所示:r中的rbenv_ruby p deploy.rb文件,rvm,rbenv和'ruby -v'。 Capistrano所做的其他一切都使用2.2環境。但是'heroku --version'顯示IT是爲1.9.3構建的。我很想爲2.2構建它,但在新環境中再次運行安裝程序並沒有改變Ruby規範。

好吧,所以這是我的死路一條。任何幫助將被絕望地讚賞。

謝謝你,史蒂夫

回答

0

通過自制軟件,而不是

$ brew install heroku 
+0

該訣竅安裝工具區。謝謝你,傑夫!對於額外的問題,你能簡單地告訴我爲什麼這有所作爲嗎? – 2015-02-09 23:03:06

+0

,因爲它使用了獨立的工具欄,它將使用您的PATH中的任何紅寶石 – 2015-02-10 23:39:44