Как вызвать ошибку, если не развернуто cap с помощью bundle exec - PullRequest
2 голосов
/ 01 июля 2011

Я только что столкнулся с тонкой проблемой с зависимостями гемов развертывания Capistrano, и я хотел бы установить, как вызывается capistrano.

Как я могу определить, что capistrano вызывался с помощью 'bundle exec', например так:

bundle exec cap app deploy

И не так:

cap app deploy

Я хотел бы поднять ошибку в последнем случае, обнаружив метод вызова в верхней части моего файла deploy.rb.

1 Ответ

7 голосов
/ 05 августа 2011

Похоже, что 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']

Надеюсь, это поможет.

...