tutorial rails golondrinas espaƱol digitalocean deploy app ruby-on-rails capistrano

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!