class PgqPrometheus::SqlCaller::ActiveRecord
Public Class Methods
new(model_class_name)
click to toggle source
@param model_class_name [Class<Object>,String] class or class name
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 14 def initialize(model_class_name) @model_class_name = model_class_name.to_s end
Public Instance Methods
consumer_info(queue, consumer = nil)
click to toggle source
Returns pgq.get_consumer_info for one or all consumers of queue. @param queue [String] queue name @param consumer [String, nil] consumer name @return [Hash<Symbol>] when queue is present. @return [Array<Hash<Symbol>>] when queue is nil.
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 35 def consumer_info(queue, consumer = nil) if consumer select_hashes('SELECT * FROM pgq.get_consumer_info(?, ?)', queue.to_s, consumer.to_s).first else select_hashes('SELECT * FROM pgq.get_consumer_info(?)', queue.to_s) end end
queue_info(queue = nil)
click to toggle source
Returns pgq.get_queue_info for one or all queues. @param queue [String, nil] queue name @return [Hash<Symbol>] when queue is present. @return [Array<Hash<Symbol>>] when queue is nil.
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 22 def queue_info(queue = nil) if queue select_hashes('SELECT * FROM pgq.get_queue_info(?)', queue.to_s).first else select_hashes('SELECT * FROM pgq.get_queue_info()') end end
release_connection()
click to toggle source
Releases active pg connection in thread. Do nothing if no connection captured.
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 45 def release_connection model_class.connection_pool.release_connection end
with_connection() { || ... }
click to toggle source
Acquires pg connection during block execution. Release it after block executed. @yield
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 52 def with_connection model_class.connection_pool.with_connection { yield } end
Private Instance Methods
model_class()
click to toggle source
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 58 def model_class @model_class ||= Kernel.const_get(@model_class_name) end
select_hashes(sql, *bindings)
click to toggle source
# File lib/pgq_prometheus/sql_caller/active_record.rb, line 62 def select_hashes(sql, *bindings) sql = model_class.send :sanitize_sql_array, bindings.unshift(sql) unless bindings.empty? result = model_class.connection.select_all(sql) result.map do |row| row.map { |k, v| [k.to_sym, result.column_types[k].deserialize(v)] }.to_h end end