Module: Jrec::PG
- Included in:
- Jrec, Collection, Model
- Defined in:
- lib/jrec/pg.rb
Instance Method Summary collapse
-
#config ⇒ Object
:singleton method parses database url.
- #config_file ⇒ Object
- #env ⇒ Object
- #exec_func(func_name, *params) ⇒ Object
- #exec_params(sql, params = []) ⇒ Object
-
#pg ⇒ Object
:singleton method holds db connection.
Instance Method Details
#config ⇒ Object
:singleton method parses database url
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/jrec/pg.rb', line 42 def config @@config ||= begin if File.exists?(config_file) db = OpenStruct.new(YAML.load_file(config_file)[env]) elsif ENV['DATABASE_URL'] db = URI.parse(ENV['DATABASE_URL']) else raise "Database configuration not found" end config = { dbname: db.path[1..-1], host: db.host, port: db.port, size: ENV['DB_POOL_SIZE'] || 5, async_autoreconnect: ENV['DB_ASYNC_AUTO_RECONNECT'] || true, connect_timeout: ENV['DB_CONN_TIMEOUT'] || 60, query_timeout: ENV['DB_QUERY_TIMEOUT'] || 30, on_autoreconnect: proc { |pg| pg.exec "SELECT plv8_startup();" rescue nil }, on_connect: proc { |pg| pg.exec "SELECT plv8_startup();" rescue nil } } config[:user] = db.user if db.user config[:password] = db.password if db.password config end end |
#config_file ⇒ Object
70 71 72 |
# File 'lib/jrec/pg.rb', line 70 def config_file ENV['DATABASE_CONFIG_FILE'] || "#{Jrec.root}/config/database.yml" end |
#env ⇒ Object
74 75 76 |
# File 'lib/jrec/pg.rb', line 74 def env ENV['RACK_ENV'] || "development" end |
#exec_func(func_name, *params) ⇒ Object
17 18 19 20 |
# File 'lib/jrec/pg.rb', line 17 def exec_func func_name, *params sql = "SELECT jrec_#{func_name}(#{ (params.length-1).times.inject("$1"){ |m,i| "#{m},$#{ i + 2 }"} })" exec_params sql, params end |
#exec_params(sql, params = []) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/jrec/pg.rb', line 22 def exec_params sql, params = [] result = pg.exec_params(sql, params) json = result.values.flatten.first result.clear json end |
#pg ⇒ Object
:singleton method holds db connection
33 34 35 |
# File 'lib/jrec/pg.rb', line 33 def pg @@connection_pool ||= ::PG::EM::ConnectionPool.new(config) end |