2011-07-01 25 views
2

我剛剛遇到capistrano部署gem依賴性的一個細微問題,我想強制執行capistrano如何調用。如果未使用bundle exec調用cap部署時如何引發錯誤

我怎樣才能檢測到Capistrano的是使用「束EXEC」像這樣調用:

bundle exec cap app deploy 

,而不是像這樣:

cap app deploy 

我想在後一種情況下引發錯誤通過檢測我的deploy.rb文件頂部的調用方法。

回答

7

Bundler似乎在運行可執行文件時設置$ BUNDLE_BIN_PATH和$ BUNDLE_GEMFILE環境變量。例如,請執行以下操作:

env >/tmp/1 
bundler exec env >/tmp/2 
diff -u /tmp/[12] 

您會看到環境中的差異。

所以後來在部署腳本,你可以做這樣的事情:

abort "You must run this using 'bundle exec ...'" unless ENV['BUNDLE_BIN_PATH'] || ENV['BUNDLE_GEMFILE'] 

希望這有助於。

+0

是的,這工作得很好。謝謝! –

相關問題