¿Cuál es la mejor manera de manejar Rails database.yml si varias personas están trabajando en el proyecto y las ubicaciones de la base de datos son diferentes (el socket en particular)?
mysql
ruby-on-rails
svn
phillee
fuente
fuente
Respuestas:
Primero, vaya
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á en Subversion:
En segundo lugar, ignore la versión .yml.
Si estás en Git:
cat > .gitignore config/database.yml git add .gitignore git commit -m "ignored database.yml"
Si está en Subversion:
En tercer lugar, instale ¿Dónde está su database.yml, amigo? :
script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude
Ese complemento alerta a los desarrolladores antes de que se ejecuten las tareas de Rake si no han creado su propia versión local de
config/database.yml
.En cuarto lugar, configure una tarea de implementación 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
En quinto lugar, cargue la versión del servidor de database.yml:
fuente
cat >> .gitignore
lugar. Ya que volará su archivo existente de lo contrario ...En Capistrano 3, en lugar de agregar la nueva tarea, puede simplemente hacer:
set :linked_files, %w{config/database.yml}
fuente
Puede usar la propiedad svn: ignore para evitar que ese archivo sea versionado.
Instrucciones aquí.
fuente
Otro método más que utiliza capistrano y ERb para solicitar las credenciales durante la implementación.
http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml/
fuente
Además de las respuestas anteriores, escribí una tarea de rake similar a "¿Dónde está tu database.yml, amigo?", Pero que permite mantener ejemplos de plantillas de cualquier archivo de configuración. Compruébalo: 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:
Hay muchas herramientas útiles y formas de hacer esto disponibles.
fuente