module Jrec::PG
Public Instance Methods
config()
click to toggle source
:singleton method parses database url
# 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()
click to toggle source
# File lib/jrec/pg.rb, line 70 def config_file ENV['DATABASE_CONFIG_FILE'] || "#{Jrec.root}/config/database.yml" end
env()
click to toggle source
# File lib/jrec/pg.rb, line 74 def env ENV['RACK_ENV'] || "development" end
exec_func(func_name, *params)
click to toggle source
# 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 = [])
click to toggle source
# 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()
click to toggle source
:singleton method holds db connection
# File lib/jrec/pg.rb, line 33 def pg @@connection_pool ||= ::PG::EM::ConnectionPool.new(config) end