Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
ruby DATABASE_URL parse
<%
require 'cgi'
require 'uri'
begin
uri = URI.parse(ENV["DATABASE_URL"])
rescue URI::InvalidURIError
raise "Invalid DATABASE_URL"
end
env = ENV["RAILS_ENV"] || ENV["RACK_ENV"]
raise "No RACK_ENV or RAILS_ENV found" unless env
def attribute(name, value, force_string = false)
if value
value_string =
if force_string
'"' + value + '"'
else
value
end
"#{name}: #{value_string}"
else
""
end
end
database = "#{(uri.path || "").split("/")[1]}_#{env}"
username = uri.user
password = uri.password
host = uri.host
port = uri.port
params = CGI.parse(uri.query || "")
params["encoding"] = ["utf8"] unless params["encoding"].present?
params["pool" ] = [5] unless params["pool" ].present?
adapter = case uri.scheme.to_s
when "postgres" then "postgresql"
when "mysql" then "mysql2"
else uri.scheme.to_s
end
%>
<%= env %>:
<%= attribute "adapter", adapter %>
<%= attribute "database", database %>
<%= attribute "username", username %>
<%= attribute "password", password, true %>
<%= attribute "host", host %>
<%= attribute "port", port %>
<% params.each do |key, value| %>
<%= key %>: <%= value.first %>
<% end %>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.