Подтвердить что ты не робот

Внештатное развертывание Capistrano в неправильном каталоге

У меня возникли проблемы с моей настройкой 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 + пассажира к nginx + единорогу. Я не думаю, что это имеет какое-то отношение к этому, поскольку это всего лишь процесс проверки.

4b9b3361

Ответ 1

В конце концов я решил это, добавив следующее к моим 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) }

Ответ 2

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

Я думаю, что это может быть проблема с областью, с которой загружаются экземпляры 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

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

Ответ 3

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

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

Ответ 4

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

require 'capistrano/ext/multistage'

# setup multistage
set :stages, %w(testing production)
set :default_stage, "testing"