如果未使用bundle exec调用cap deploy,如何引发错误

时间:2011-07-01 00:16:18

标签: ruby-on-rails capistrano bundler

我刚刚遇到了capistrano部署gem依赖项的一个微妙问题,我想强制执行capistrano的调用。

如何检测使用'bundle exec'调用capistrano,如下所示:

bundle exec cap app deploy

而不是这样:

cap app deploy

我想通过检测deploy.rb文件顶部的调用方法来引发后一种情况的错误。

1 个答案:

答案 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']

希望这有帮助。