Class: Postgres
- Inherits:
-
Object
- Object
- Postgres
- Defined in:
- lib/postgres.rb
Overview
Postgres database API
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
Instance Method Summary collapse
- #connected? ⇒ Boolean
- #execute(query) ⇒ Object
- #finish ⇒ Object
-
#initialize(conf, user = nil) ⇒ Postgres
constructor
A new instance of Postgres.
- #ok? ⇒ Boolean
- #script(file) ⇒ Object
- #trace(message) ⇒ Object
- #update(file_name) ⇒ Object
- #value(query) ⇒ Object
Constructor Details
#initialize(conf, user = nil) ⇒ Postgres
Returns a new instance of Postgres.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/postgres.rb', line 8 def initialize(conf, user = nil) @status = true @config = conf begin if user.nil? @connection = PG::Connection.new(dbname: @config.database, user: @config.username, password: @config.password, host: @config.host, port: @config.port) else # assuming user is postgres, dbname is also postgres @connection = PG::Connection.new(dbname: user, user: user, host: config.host, port: config.port) end rescue PG::Error => e trace e. @connection = nil @status = false end end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
6 7 8 |
# File 'lib/postgres.rb', line 6 def config @config end |
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
6 7 8 |
# File 'lib/postgres.rb', line 6 def connection @connection end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
6 7 8 |
# File 'lib/postgres.rb', line 6 def status @status end |
Instance Method Details
#connected? ⇒ Boolean
27 28 29 |
# File 'lib/postgres.rb', line 27 def connected? ! @connection.nil? end |
#execute(query) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/postgres.rb', line 44 def execute(query) begin trace query result = @connection.query(query) rescue PG::Error => e trace e. # puts "ERROR: failed query [#{query}]" if @config.verbose @status = false result = nil end result end |
#finish ⇒ Object
35 36 37 38 |
# File 'lib/postgres.rb', line 35 def finish @connection.finish unless @connection.nil? @status end |
#ok? ⇒ Boolean
31 32 33 |
# File 'lib/postgres.rb', line 31 def ok? @status end |
#script(file) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/postgres.rb', line 69 def script(file) query = '' file.each_line do |line| trace line query = query + ' ' + line if query.end_with?(';') @connection.query(query) query = '' end end end |
#trace(message) ⇒ Object
40 41 42 |
# File 'lib/postgres.rb', line 40 def trace() puts if @config.verbose end |
#update(file_name) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/postgres.rb', line 81 def update(file_name) puts "Executing #{file_name}" if @config.verbose ver = @config.version(file_name) begin trace 'BEGIN;' @connection.query('BEGIN;') file = File.open(file_name, 'r') script(file) file.close @connection.query("INSERT INTO migrations VALUES('#{ver}', now());") trace 'COMMIT;' @connection.query('COMMIT;') rescue SystemCallError => e trace e. @connection.query('ROLLBACK;') rescue PG::Error => e trace e. @connection.query('ROLLBACK;') end end |
#value(query) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/postgres.rb', line 57 def value(query) return '' unless @status begin result = @connection.query(query) return result.getvalue(0, 0).to_s rescue PG::Error => e trace e. @status = false return '' end end |