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.