Skip to content

Instantly share code, notes, and snippets.

@pricees
Last active March 9, 2021 12:09
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save pricees/9630464 to your computer and use it in GitHub Desktop.
Save pricees/9630464 to your computer and use it in GitHub Desktop.
Rails database connection, url to yaml
#########################################################
#
# This method takes a db connection url and returns rails
# config YAML
#
##########################################################
require "uri"
require "yaml"
db_url = "mysql2://ted:password@example.net:3306/test?reconnect=false"
uri = URI.parse(ENV["db_url"] || db_url)
qs = Hash[URI::decode_www_form(uri.query)]
ui = uri.userinfo.split(':')
config = {
"production" => {
"encoding" => qs["encoding"] || "utf-8",
"adapter" => uri.scheme,
"host" => uri.host,
"port" => uri.port || 3306,
"database" => uri.path[1..-1],
"username" => ui.first,
"password" => ui.last,
"reconnect" => qs["reconnect"] || true,
"pool" => qs["pool"] || 5,
}.to_yaml
puts config
# ---
# production:
# encoding: utf-8
# adapter: mysql2
# host: example.net
# port: 3306
# database: test
# username: ted
# password: password
# reconnect: 'false'
# pool: 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment