Comment gérer Rails database.yml

Quelle est la meilleure façon de gérer la firebase database Rails si plusieurs personnes travaillent sur le projet et que les emplacements de la firebase database sont différents (en particulier le socket).

Tout d’abord, déplacez database.yml dans un fichier de modèle.

Si vous êtes sur Git:

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

Ou, si vous êtes sur Subversion:

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

Deuxièmement, ignorez la version .yml.

Si vous êtes sur Git:

 cat > .gitignore config/database.yml git add .gitignore git commit -m "ignored database.yml" 

Si vous êtes sur Subversion:

 svn propset svn:ignore config "database.yml" 

Troisièmement, installez où est votre database.yml, mec? :

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

Ce plug-in alerte les développeurs avant l’exécution de tâches Rake s’ils n’ont pas créé leur propre version locale de config/database.yml .

Quasortingèmement, configurez une tâche de déploiement 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 

Cinquièmement, téléchargez la version du serveur de database.yml:

 scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml 

Dans Capistrano 3, au lieu d’append la nouvelle tâche, vous pouvez simplement faire:

 set :linked_files, %w{config/database.yml} 

Vous pouvez utiliser la propriété svn: ignore pour empêcher que ce fichier soit versionné.

Instructions ici

Encore une autre méthode qui utilise capistrano un ERb pour demander les informations d’identification pendant le déploiement.

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

En plus des réponses ci-dessus, j’ai écrit une tâche similaire à “Où est votre database.yml, mec?”, Mais permettant de conserver des exemples de modèles de fichiers de configuration. Check it out: https://github.com/Velid/exemplify

Au lieu d’écrire des configurations de production séparées et de les relier via Capistrano, je suggère également d’utiliser des variables d’environnement pour vos informations d’identification:

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

Il existe de nombreux outils pratiques et des moyens de le faire disponibles.