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

ruby-on-rails - rails - gem capistrano



Capistrano 3, Rails 4, la configuraciĆ³n de la base de datos no especifica el adaptador (6)

Cuando comienzo

producción de la tapa de despliegue

falla así:

DEBUG [4ee8fa7a] Command: cd /home/deploy/myapp/releases/releases/20131025212110 && (RVM_BIN_PATH=~/.rvm/bin RAILS_ENV= ~/.rvm/bin/myapp_rake assets:precompile ) DEBUG [4ee8fa7a] rake aborted! DEBUG [4ee8fa7a] database configuration does not specify adapter

Puedes ver que "RAILS_ENV =" está realmente vacío y me pregunto por qué podría estar pasando eso. Supongo que este es el motivo de este último error porque no tengo una configuración de base de datos.

El archivo deploy.rb está debajo:

set :application, ''myapp'' set :repo_url, ''[email protected]:developer/myapp.git'' set :branch, :master set :deploy_to, ''/home/deploy/myapp/releases'' set :scm, :git set :devpath, "/home/deploy/myapp_development" set :user, "deploy" set :use_sudo, false set :default_env, { rvm_bin_path: ''~/.rvm/bin'' } set :keep_releases, 5 namespace :deploy do desc ''Restart application'' task :restart do on roles(:app), in: :sequence, wait: 5 do # Your restart mechanism here, for example: within release_path do execute " bundle exec thin restart -O -C config/thin/production.yml" end end end after :restart, :clear_cache do on roles(:web), in: :groups, limit: 3, wait: 10 do within release_path do end end end after :finishing, ''deploy:cleanup'' end

Database.yml:

production: adapter: mysql2 encoding: utf8 database: myapp_production pool: 5 username: user password: pass host: localhost development: adapter: mysql2 encoding: utf8 database: myapp_development pool: 5 username: user password: pass host: localhost

El problema se resuelve si agrego

set :rails_env, "production"

para mi deploy.rb, pero esto me parece una codificación y estoy seguro de que hay una solución mejor.


¿Qué pasa si añades un archivo?

deploy/production.rb

Con esta línea:

set :stage, :production


Basado en la respuesta de Marc, que definitivamente parece ser la correcta,

puede solucionar esto hasta que se arregle en sentido ascendente agregando esto a su config / deploy.rb en el bloque "namespace: deploy":

desc ''Provision env before assets:precompile'' task :fix_bug_env do set :rails_env, (fetch(:rails_env) || fetch(:stage)) end before "deploy:assets:precompile", "deploy:fix_bug_env"

Esto forzará la carga de env y la provisión de RAILS_ENV antes de los activos: se llama a la precompilación.


Edición: según esta solicitud de extracción , ahora está arreglada en la versión 1.1.0 de capistrano-rails .

Por este problema de Github , otra solución es editar tu Capfile . Comenta estas dos líneas

#require ''capistrano/rails/assets'' #require ''capistrano/rails/migrations''

y poner esta linea en

require ''capistrano/rails''

que establecerá correctamente su variable RAILS_ENV .


Parece ser un error en los carriles capistrano.

Hay una tarea (rails.rake) que configura el entorno desde rails_env o stage:

namespace :deploy do before :starting, :set_rails_env do set :rails_env, (fetch(:rails_env) || fetch(:stage)) end end

Pero esta tarea no se llama antes, es decir, los activos: precompilación. Así que esto:

namespace :assets do task :precompile do on roles :web do within release_path do with rails_env: fetch(:rails_env) do execute :rake, "assets:precompile" end end end end end

falla porque rails_env es nil si no está configurado explícitamente.

Si tengo tiempo para profundizar un poco más, presentaré un informe de error.


Si está utilizando pasajeros, necesita agregar

rails_env production;

en el servidor web (por ejemplo: nginx) .conf donde ha especificado valores para passenger_ruby y passenger_root .


Usando Cap 3 y capistrano_rails en los rieles 4 recibí el mismo error; en el archivo (s) de entorno que se está desplegando, establezco

set :stage, :production set :rails_env, ''production'' # even though doc says only need to do this if it''s different

Doc aquí: https://github.com/capistrano/rails