Estou escrevendo uma tarefa de rake que faz algum trabalho de banco de dados fora do Rails / ActiveRecord.
Existe uma maneira de obter as informações de conexão do banco de dados (host, nome de usuário, senha, nome do banco de dados) para o ambiente atual, conforme definido em database.yml
?
Gostaria de obtê-lo para que eu possa usá-lo para conectar assim ...
con = Mysql.real_connect("host", "user", "pw", "current_db")
Rails.configuration
̶R̶a̶i̶l̶s̶.̶c̶o̶n̶f̶i̶g̶u̶r̶a̶t̶i̶o̶n̶
edited original original original original original original original original original original original Eu vejo a resposta @KenB.A resposta de Bryan no comentário acima merece um pouco mais de exposição:
fonte
retorna a configuração da conexão em um hash:
Conforme
tpett
observado em seu comentário: esta solução é responsável pela mesclagem da configuração dedatabase.yml
e para a variável de ambienteDATABASE_URL
.fonte
database.yml
configuração com aDATABASE_URL
variável de ambiente.Eu acho que essa é a solução mais simples. Após alguns testes (pelo menos no Rails 5.2), isso resolverá o DATABASE_URL corretamente.
fonte
Pergunta antiga, mas essa foi uma das minhas primeiras paradas para descobrir como fazer isso, e acho que isso pode ajudar outra pessoa. Normalmente, tenho arquivos .my.cnf no diretório inicial. Portanto, usar a gem 'parseconfig' e alguma sintaxe do ERB no meu arquivo de configuração database.yml significa que tenho um arquivo dinâmico que me permite sentir bem ao verificar o controle de origem e também simplificar as implantações (no meu caso). Observe também a lista de soquetes comuns, facilitando a movimentação do meu aplicativo para diferentes sistemas operacionais que podem ter um caminho de soquete Unix diferente.
ref: http://effectif.com/articles/database-yml-should-be-checked-in
fonte