A Sane database.yml

Rails, felizmente, é tudo sobre convenção sobre configuração. Eu NÃO falta os dias brincando com uma tonelada de arquivos XML para DI e tal. Dito isso, uma coisa que é configurada em todos os aplicativos Rails é database.yml. E mesmo que os documentos sejam claros sobre isso, ainda pode ser uma dor de cabeça para configurar todas as vezes. Eventualmente, vou criar uma gema apenas para instalá-lo para mim, mas aqui está o que eu uso-

development:
adapter
: postgresql
encoding
: utf8
database
: <%= "#{Rails.application.class.parent_name}-dev-#{`git rev-parse --abbrev-ref HEAD`.strip}".downcase %>
username
: <%= ENV['DB_USER_POSTGRES_USERNAME'] %>
password
: <%= ENV['DB_USER_POSTGRES_PASSWORD'] %>
host
: localhost
port
: 5432

test
:
adapter
: postgresql
encoding
: utf8
database
: <%= "#{Rails.application.class.parent_name}-test-#{`git rev-parse --abbrev-ref HEAD`.strip}".downcase %>
username
: <%= ENV['DB_USER_POSTGRES_USERNAME'] %>
password
: <%= ENV['DB_USER_POSTGRES_PASSWORD'] %>
host
: localhost
port
: 5432

O único requisito aqui é que você esteja usando git com seu projeto. O que isso fará será criar um novo esquema de banco de dados (postgres) por branch git em que você estiver, usar a variável de ambiente para nome de usuário e senha, e manter todas as outras opções como seus padrões.

O benefício que encontrei em usar o nome do branch git no nome do banco de dados é em grande parte fazer o trabalho em um branch (que adiciona ou remove colunas / índices / tabelas) e, em seguida, alternar para o master para um hotfix. De repente, você está trabalhando contra um estado de banco de dados inválido. Alguns não são grandes fãs dessa configuração, mas funciona muito bem para mim.