Sha256: 23a6cf82b6bdfc940ef5b316421fd2cdd97f2dbc68b990fd046a75b263689b31
Contents?: true
Size: 1.55 KB
Versions: 9
Compression:
Stored size: 1.55 KB
Contents
#!/usr/bin/env ruby require 'pg' unless defined?( PG ) # The PG connection class. class PG::Connection # The order the options are passed to the ::connect method. CONNECT_ARGUMENT_ORDER = %w[host port options tty dbname user password] ### Quote the given +value+ for use in a connection-parameter string. def self::quote_connstr( value ) return "'" + value.to_s.gsub( /[\\']/ ) {|m| '\\' + m } + "'" end ### Parse the connection +args+ into a connection-parameter string. See PG::Connection.new ### for valid arguments. def self::parse_connect_args( *args ) return '' if args.empty? # This will be swapped soon for code that makes options like those required for # PQconnectdbParams()/PQconnectStartParams(). For now, stick to an options string for # PQconnectdb()/PQconnectStart(). connopts = [] # Handle an options hash first if args.last.is_a?( Hash ) opthash = args.pop opthash.each do |key, val| connopts.push( "%s=%s" % [key, PG::Connection.quote_connstr(val)] ) end end # Option string style if args.length == 1 && args.first.to_s.index( '=' ) connopts.unshift( args.first ) # Append positional parameters else args.each_with_index do |val, i| next unless val # Skip nil placeholders key = CONNECT_ARGUMENT_ORDER[ i ] or raise ArgumentError, "Extra positional parameter %d: %p" % [ i+1, val ] connopts.push( "%s=%s" % [key, PG::Connection.quote_connstr(val.to_s)] ) end end return connopts.join(' ') end end # class PG::Connection # Backward-compatible alias PGconn = PG::Connection
Version data entries
9 entries across 9 versions & 1 rubygems