Pregunta

Estoy implementando el entorno de producción de mi aplicación Ruby on Rails con Capistrano Gem en un servidor privado virtual.Ejecuto el siguiente comando para implementar:

bundle exec cap production deploy

Todo parece funcionar bien a menos que intente comprobar en qué entorno está funcionando mi versión de producción actual.

Una forma que utilizo para comprobar esto es ejecutar:

rails console
Rails.env

La respuesta que recibo es "desarrollo", lo cual es bastante aterrador.

Durante otra prueba:cuando ejecuto lo siguiente en mi versión actual:

rails db

Recibo un error que indica que mydatabase_development no se creó.

Mi aplicación parece estar funcionando bien, pero no sé si esto causará problemas importantes en el futuro.En primer lugar:¿Hay alguna manera de determinar si mi copia en vivo realmente se está ejecutando en desarrollo?En segundo lugar:Dado que tengo un problema, ¿cómo configuro capistrano para implementar un entorno de producción?

¿Fue útil?

Solución

Manten eso en mente rails console Se involucra en el entorno actual según lo dictado por RAILS_ENV o RACK_ENV en tu entorno.Si no configura esto explícitamente en su servidor, probablemente será predeterminado development.

Una forma de solucionar este problema es forzarlo en su .bash_profile o cualquier perfil de shell que estés usando.Por ejemplo:

export RAILS_ENV=production

Eso debería hacer que esté disponible y cuando actives tu shell Rails se activará correctamente.

Como nota, ni siquiera debería poder iniciar en modo de desarrollo en su servidor de producción ya que no debería haber una entrada con ese nombre en config/database.yml.Una buena práctica es almacenar config/database.yml solo en el servidor de producción y muévalo durante la implementación de Capistrano.

Añade esto a tu config/deploy.rb:

set :linked_files, %w[
  config/database.yml
]

Luego creas una configuración solo de producción en shared/config/database.yml que se vinculará en su lugar cuando lo implemente.Asegúrate de excluir config/database.yml desde su sistema de control de versiones para que no se implemente.

La razón por la que su sitio probablemente esté bien es porque un lanzador como Passenger configura automáticamente RACK_ENV a production a menos que se configure lo contrario.Sin embargo, esto no afecta a su shell, que por defecto es development.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top