Capistrano Multistage развертывание в неправильном каталоге - PullRequest
16 голосов
/ 21 ноября 2011

У меня возникли проблемы с настройкой capistrano после недавнего обновления моих драгоценных камней.У меня есть многоступенчатая установка с производственной и промежуточной настройкой.

/ config / deploy.rb

# setup multistage
set :stages, %w(testing production)
set :default_stage, "testing"
require 'capistrano/ext/multistage'

/ config / deploy / production.rb

# Set deploy path
set :deploy_to, "/var/www/mysite/live"
set :rails_env, "production"

/config/deploy/testing.rb

# Set deploy path
set :deploy_to, "/var/www/mysite/test"
set :rails_env, "test"

Проблема в том, что он, кажется, игнорирует мой параметр deploy_to.Он просто развертывается по умолчанию /u/apps/mysite.

Я не знаю, имеет ли он какое-либо значение, причина всего этого - переход с apache + passenger на nginx + единорог.Я не думаю, что это как-то связано с этим, поскольку это всего лишь процесс оформления заказа.

Ответы [ 4 ]

9 голосов
/ 24 октября 2012

Я наткнулся на это во время переполнения стека.Это старый вопрос, но так как он помечен как открытый, я собираюсь дать ему шанс.

Я думаю, что это может быть проблемой, связанной с загрузкой Экземпляров Capistrano.

Я заметил, что этот синтаксис не работает в файлах production.rb и test.rb

 set :deploy_to, "/var/www/mysite/live"

Но этот работает:

set(:deploy_to)  { "/var/www/#{application}/live" }

Это тонкийразница, но я думаю, что на самом деле работает передача информации в виде блока Proc, тогда как первая передает ее в виде строки.У меня есть подлое подозрение, что к тому времени, когда появляется экземпляр Capistrano, этой строки уже нет.

Это будет означать, что у вас что-то не так в вашей загрузке или требуется порядок, так как вы сможете установить переменные развертывания в этих файлах.Если вы не можете понять это, вы можете обмануть и окружить deploy / production.rb или deploy / test.rb кодом

Capistrano::Configuration.instance.load do
  # variables, etc here
end

Это определенно скажет вам, что этот файл не загружается в рамках экземпляра Capistrano.

Также второстепенный вопрос, но файлы должны быть в

config/deploy # relative to your Rails app

Не

/config/deploy/ # this is an absolute path off of your root folder

Удачи.Надеюсь, вы уже решили эту проблему!

0 голосов
/ 17 сентября 2015

В конце концов я решил эту проблему, добавив следующее в мой файл deploy / production.rb и testing.rb

set(:deploy_to)         { "/var/www/#{application}/live" }
set(:releases_path)     { File.join(deploy_to, version_dir) }
set(:shared_path)       { File.join(deploy_to, shared_dir) }
set(:current_path)      { File.join(deploy_to, current_dir) }
set(:release_path)      { File.join(releases_path, release_name) }
0 голосов
/ 14 ноября 2012

Может быть, он у вас в порядке deploy.rb ?поставьте требуемый над настройками сцены

require 'capistrano/ext/multistage'

# setup multistage
set :stages, %w(testing production)
set :default_stage, "testing"
0 голосов
/ 21 ноября 2011

Где находятся файлы production.rb и testing.rb в проекте?

Убедитесь, что они под config/deploy.

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