ruby-on-rails - golondrinas - digitalocean ruby on rails
Capistrano Multinivel desplegando en el directorio incorrecto (4)
Estoy teniendo algunos problemas con mi configuración de capistrano después de actualizar mis gemas últimamente. Tengo una configuración de varias etapas con una configuración de producción y puesta en escena.
/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"
El problema es que parece ignorar mi configuración deploy_to. Simplemente se despliega al valor predeterminado / u / apps / mysite.
No sé si tiene alguna relevancia, la causa de todo esto es un cambio de apache + pasajero a nginx + unicornio. No creo que tenga nada que ver con eso, ya que esto es solo el proceso de pago.
¿Dónde se encuentran esos production.rb y testing.rb en el proyecto?
Asegúrese de que estén bajo config/deploy
.
¿Podría ser justo el orden que tienes en tu deploy.rb ? poner el requerimiento por encima de la configuración del escenario
require ''capistrano/ext/multistage''
# setup multistage
set :stages, %w(testing production)
set :default_stage, "testing"
Eventualmente resolví esto agregando lo siguiente a mi deploy / production.rb y 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) }
Me topé con esto mientras estaba en . Es una pregunta antigua, pero como está marcada como abierta, voy a darle una oportunidad.
Creo que esto podría ser un problema de alcance con la forma en que se cargan las instancias de Capistrano.
Noté que esta sintaxis no funciona en los archivos production.rb y test.rb
set :deploy_to, "/var/www/mysite/live"
Pero este hace:
set(:deploy_to) { "/var/www/#{application}/live" }
Es una diferencia sutil, pero creo que el que funciona es en realidad pasar la información como un bloque Proc, mientras que el primero lo hace como una cadena. Tengo una sospecha astuta de que para cuando la Instancia de Capistrano nazca, esa cadena ya no está presente.
Esto me indicaría que algo está apagado en su carga o requiere orden, ya que debería poder configurar las variables de implementación en estos archivos. Si no puede resolverlo, puede hacer trampa y rodear el código de deploy / production.rb o deploy / test.rb con
Capistrano::Configuration.instance.load do
# variables, etc here
end
Eso definitivamente le diría que este archivo no se está cargando dentro del alcance de la instancia de Capistrano.
También punto menor pero los archivos deben estar en
config/deploy # relative to your Rails app
No
/config/deploy/ # this is an absolute path off of your root folder
Buena suerte. Esperemos que ya hayas resuelto este problema!