Конфигурация Capistrano - PullRequest
       7

Конфигурация Capistrano

4 голосов
/ 02 февраля 2010

У меня есть некоторые проблемы с изменяемой областью действия с многоступенчатым модулем capistrano-ext gem У меня сейчас, в config/deploy/staging.rb.

set(:settings) { YAML.load_file("config/deploy.yml")['staging'] }

set :repository,  settings["repository"]
set :deploy_to,   settings["deploy_to"]
set :branch,      settings["branch"]
set :domain,      settings["domain"]
set :user,        settings["user"]

role :app, domain
role :web, domain
role :db,  domain, :primary => true

Мой config/deploy/production.rb файл похож. Это не кажется очень сухим. В идеале, я бы хотел, чтобы все было в файле deploy.rb. Если бы в текущем этапе была установлена ​​переменная, все было бы действительно чисто.

ОБНОВЛЕНИЕ: Я нашел решение.

Я определил эту функцию в deploy.rb:

def set_settings(params)
  params.each_pair do |k,v|
    set k.to_sym, v
  end
  if exists? :domain
    role :app, domain
    role :web, domain
    role :db,  domain, :primary => true
  end
end

Тогда мой staging.rb файл просто set_settings(YAML.load_file("config/deploy.yml")['staging'])

Ответы [ 3 ]

2 голосов
/ 04 апреля 2010

Вы делаете это слишком сложным.

Просто поместите ваш общий код в файл deploy.rb:

role :app, domain
role :web, domain
role :db,  domain, :primary => true

и ваши зависящие от этапа настройки в ваших файлах config / deploy / staging.rb, production.rb и т. Д.

Затем запустите cap deploy, как вы сказали: cap staging deploy

Ваши файлы stage.rb также могут использовать общие переменные. Например, мой промежуточный файл имеет только одну строку:

set: deploy_to, "/ var / www / # {domain} _staging"

Остальное в deploy.rb

0 голосов
/ 23 апреля 2012

Eli,

Да, вы можете выполнить развертывание кэпа.Сделайте это в верхней части вашего файла развертывания.

set :deploy_env,  ARGV[0].to_sym

или без символа, если вы предпочитаете.Но учтите, что это может потребовать среды для простых вещей, таких как запуск

cap -vT
0 голосов
/ 02 февраля 2010

try CAPDEV='staging' cap deploy и ENV['CAPDEV'] в deploy.rb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...