Ruby on Rails: Bundler & Capistrano: укажите, какие группы (разработка, тестирование) следует исключить при развертывании

В документации Bundler сказано, что для установки всех необходимых бандлов при развертывании через Capistrano достаточно вставить

require 'bundler/capistrano' # siehe http://gembundler.com/deploying.html

в его deploy.rb. Затем, после развертывания, Capistrano вызывает

  * executing "bundle install --gemfile .../releases/20110403085518/Gemfile \
    --path .../shared/bundle --deployment --quiet --without development test"

Это прекрасно работает.

Однако у нас есть промежуточная установка на нашем производственном сервере, изолированном от реального работающего сайта, где мы тестируем новую версию приложения с (клонированными и защищенными брандмауэром) оперативными производственными данными. Там нам нужно установить гемы для тестирования и разработки.

Как указать здесь командную строку capistrano? Есть ли параметры, которые я могу использовать, или мне нужно настроить свою собственную задачу capistrano, чтобы перезаписать задачу Bundler?

Спасибо!


person Jens    schedule 03.04.2011    source источник


Ответы (3)


Написание разных задач, безусловно, упростит задачу:

task :production do
  # These are default settings
  set :bundle_without, [:development, :test]
end

task :staging do
  set :bundle_without, [:test]
  # set :rails_env, 'staging'
end

Однако, если вы хотите использовать параметры командной строки, вы можете включить предоставленное значение:

cap deploy target=staging

И внутри вашего файла deploy.rb вы можете использовать значение параметра как:

if target == "staging"
  set :bundle_without, [:test]
  # do other stuff here
end

Существует также более «правильный» объект конфигурации, который вы можете использовать. Я нашел ссылку на него здесь: http://ryandaigle.com/articles/2007/6/22/using-command-line-parameters-w-rake-and-capistrano

person Scott    schedule 03.04.2011
comment
Я использую расширение Capistrano под названием «многоэтапное», которое позволяет указывать различные целевые среды (в моем случае — промежуточную и производственную). Настройка :bundle_without на данный момент исправила мою проблему. Спасибо! - person Jens; 07.04.2011
comment
С тех пор, как я ответил на этот вопрос более года назад, теперь я также использую жемчужину расширения capistrano-multistage. - person Scott; 10.08.2012

Я думаю, что самый чистый способ — просто добавить set :bundle_without в файлы среды развертывания, используя это:

https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension

person JPN    schedule 27.07.2013

У меня нет настройки для независимого подтверждения, но получает ли RAILS_ENV='development' ее?

person Allyl Isocyanate    schedule 03.04.2011