Module: RubyPGExtras
- Defined in:
- lib/ruby-pg-extras.rb,
lib/ruby-pg-extras/version.rb
Constant Summary collapse
- QUERIES =
i( bloat blocking cache_hit calls extensions table_cache_hit index_cache_hit index_size index_usage locks all_locks long_running_queries mandelbrot outliers records_rank seq_scans table_indexes_size table_size total_index_size total_table_size unused_indexes vacuum_stats )
- VERSION =
"1.0.0"- @@database_url =
nil
Class Method Summary collapse
- .connection ⇒ Object
- .database_url ⇒ Object
- .database_url=(value) ⇒ Object
- .description_for(query_name:) ⇒ Object
- .display_result(result, title:, in_format:) ⇒ Object
- .run_query(query_name:, in_format:) ⇒ Object
- .sql_for(query_name:) ⇒ Object
- .sql_path_for(query_name:) ⇒ Object
Class Method Details
.connection ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/ruby-pg-extras.rb', line 84 def self.connection database_uri = URI.parse(database_url) @_connection ||= PG.connect( dbname: database_uri.path[1..-1], host: database_uri.host, port: database_uri.port, user: database_uri.user, password: database_uri.password ) end |
.database_url ⇒ Object
100 101 102 |
# File 'lib/ruby-pg-extras.rb', line 100 def self.database_url @@database_url || ENV.fetch("DATABASE_URL") end |
.database_url=(value) ⇒ Object
96 97 98 |
# File 'lib/ruby-pg-extras.rb', line 96 def self.database_url=(value) @@database_url = value end |
.description_for(query_name:) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/ruby-pg-extras.rb', line 66 def self.description_for(query_name:) first_line = File.open( sql_path_for(query_name: query_name) ) { |f| f.readline } first_line[/\/\*(.*?)\*\//m, 1].strip end |
.display_result(result, title:, in_format:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ruby-pg-extras.rb', line 41 def self.display_result(result, title:, in_format:) case in_format when :array result.values when :hash result.to_a when :raw result when :display_table headings = if result.count > 0 result[0].keys else ["No results"] end puts Terminal::Table.new( title: title, headings: headings, rows: result.values ) else raise "Invalid in_format option" end end |
.run_query(query_name:, in_format:) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/ruby-pg-extras.rb', line 29 def self.run_query(query_name:, in_format:) result = connection.exec( sql_for(query_name: query_name) ) display_result( result, title: description_for(query_name: query_name), in_format: in_format ) end |
.sql_for(query_name:) ⇒ Object
74 75 76 77 78 |
# File 'lib/ruby-pg-extras.rb', line 74 def self.sql_for(query_name:) File.read( sql_path_for(query_name: query_name) ) end |
.sql_path_for(query_name:) ⇒ Object
80 81 82 |
# File 'lib/ruby-pg-extras.rb', line 80 def self.sql_path_for(query_name:) File.join(File.dirname(__FILE__), "/ruby-pg-extras/queries/#{query_name}.sql") end |