【问题标题】:How to raise error if cap deploy was not invoked using bundle exec如果未使用 bundle exec 调用 cap deploy 如何引发错误
【发布时间】:2011-07-01 00:16:18
【问题描述】:

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

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

bundle exec cap app deploy

不是这样的:

cap app deploy

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

【问题讨论】:

    标签: ruby-on-rails capistrano bundler


    【解决方案1】:

    似乎 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']
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多