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

Noa*_*orp 2 capistrano ruby-on-rails bundler

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

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

bundle exec cap app deploy
Run Code Online (Sandbox Code Playgroud)

而不是这样的:

cap app deploy
Run Code Online (Sandbox Code Playgroud)

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

小智 7

在运行可执行文件时,Bundler似乎设置了$ BUNDLE_BIN_PATH和$ BUNDLE_GEMFILE环境变量.例如,执行以下操作:

env >/tmp/1
bundler exec env >/tmp/2
diff -u /tmp/[12]
Run Code Online (Sandbox Code Playgroud)

你会看到环境的差异.

那么在您的部署脚本中,您可以执行以下操作:

abort "You must run this using 'bundle exec ...'" unless ENV['BUNDLE_BIN_PATH'] || ENV['BUNDLE_GEMFILE']
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.