我刚刚遇到了capistrano部署gem依赖项的一个微妙问题,我想强制执行capistrano的调用。
如何检测使用'bundle exec'调用capistrano,如下所示:
bundle exec cap app deploy
而不是这样:
cap app deploy
我想通过检测deploy.rb文件顶部的调用方法来引发后一种情况的错误。
答案 0 :(得分: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']
希望这有帮助。