Sha256: c2bb7fefd637f57b487dbe806ddd6255e3cbbb19d80557642769e9b66586b9ad
Contents?: true
Size: 1.71 KB
Versions: 4
Compression:
Stored size: 1.71 KB
Contents
require 'addressable/uri' module ROM module Rails module ActiveRecord class UriBuilder def build(adapter, uri_options) builder_method = :"#{adapter}_uri" uri = if respond_to?(builder_method) send(builder_method, uri_options) else generic_uri(uri_options) end # JRuby connection strings require special care. if RUBY_ENGINE == 'jruby' && adapter != 'postgresql' uri = "jdbc:#{uri}" end uri end def sqlite3_uri(config) path = Pathname.new(config.fetch(:root)).join(config.fetch(:database)) build_uri( scheme: 'sqlite', host: '', path: path.to_s ) end def postgresql_uri(config) generic_uri(config.merge( host: config.fetch(:host) { '' }, scheme: 'postgres' )) end def mysql_uri(config) if config.key?(:username) && !config.key?(:password) config.update(password: '') end generic_uri(config) end def generic_uri(config) build_uri( scheme: config.fetch(:scheme), user: escape_option(config[:username]), password: escape_option(config[:password]), host: config[:host], port: config[:port], path: config[:database] ) end def build_uri(attrs) Addressable::URI.new(attrs).to_s end def escape_option(option) option.nil? ? option : CGI.escape(option) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems