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