Cómo administrar la base de datos Rails.yml


Cuál es la mejor manera de manejar la base de datos Rails.yml si varias personas están trabajando en el proyecto y las ubicaciones de la base de datos son diferentes (el socket en particular).

Author: Ryan Bigg, 2009-09-20

5 answers

Primero, mueva database.yml a un archivo de plantilla.

Si estás en Git:

git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"

O, si estás en Subversion:

svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"

En segundo lugar, ignorar el .versión yml.

Si estás en Git:

cat > .gitignore
config/database.yml

git add .gitignore
git commit -m "ignored database.yml"

Si estás en Subversion:

svn propset svn:ignore config "database.yml"

Tercero, instala Dónde está tu base de datos.yml, amigo?:

script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude

Ese plugin alerta a los desarrolladores antes de ejecutar cualquier tarea de Rake si no han creado su propia versión local de config/database.yml.

Cuarto, configurar una tarea de despliegue de Capistrano:

# in RAILS_ROOT/config/deploy.rb:
after 'deploy:update_code', 'deploy:symlink_db'

namespace :deploy do
  desc "Symlinks the database.yml"
  task :symlink_db, :roles => :app do
    run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
  end
end

Quinto, cargue la versión de la base de datos del servidor.yml:

scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml
 160
Author: James A. Rosen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-06 07:58:30

En Capistrano 3, en lugar de agregar la nueva tarea, simplemente puede hacer:

set :linked_files, %w{config/database.yml}
 16
Author: Martin Sommer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-11 17:17:30

Puede usar la propiedad svn:ignore para evitar que ese archivo sea versionado.

Instrucciones aquí.

 2
Author: Sam DeFabbia-Kane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-19 23:56:26

Otro método que usa capistrano y ERb para solicitar las credenciales durante la implementación.

Http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml /

 2
Author: Paul Alexander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-02 20:47:19

Además de las respuestas anteriores, escribí una tarea de rake similar a "Where's your database.yml, amigo?", pero permitiendo mantener ejemplos de plantillas de cualquier archivo de configuración. Échale un vistazo: https://github.com/Velid/exemplify

Como alternativa a escribir configuraciones de producción separadas y vincularlas a través de Capistrano, también sugeriría usar variables de entorno para sus credenciales:

password: <%= ENV['PROD_DATABASE_PASSWORD'] %>

Hay muchos útiles herramientas y formas de haga esto disponible alrededor.

 0
Author: smugglerFlynn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-16 07:32:48