Module: RailsSqliteExtras
- Defined in:
- lib/rails-sqlite-extras.rb,
lib/rails_sqlite_extras/version.rb
Defined Under Namespace
Classes: Railtie
Constant Summary collapse
- QUERIES =
i( index_size integrity_check pragma sequence_number table_size total_size )
- VERSION =
"0.1.1"- @@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
80 81 82 83 84 85 86 |
# File 'lib/rails-sqlite-extras.rb', line 80 def self.connection if (db_url = ENV["RAILS_SQLITE_EXTRAS_DATABASE_URL"]) ActiveRecord::Base.establish_connection(db_url).lease_connection else ActiveRecord::Base.connection end end |
.database_url ⇒ Object
92 93 94 |
# File 'lib/rails-sqlite-extras.rb', line 92 def self.database_url @@database_url || ENV["RUBY_PG_EXTRAS_DATABASE_URL"] || ENV.fetch("DATABASE_URL") end |
.database_url=(value) ⇒ Object
88 89 90 |
# File 'lib/rails-sqlite-extras.rb', line 88 def self.database_url=(value) @@database_url = value end |
.description_for(query_name:) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/rails-sqlite-extras.rb', line 68 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
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/rails-sqlite-extras.rb', line 37 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.map(&:values), ) else raise "Invalid in_format option" end end |
.run_query(query_name:, in_format:) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rails-sqlite-extras.rb', line 25 def self.run_query(query_name:, in_format:) sql = sql_for(query_name: query_name) result = connection.execute(sql) self.display_result( result, title: self.description_for(query_name: query_name), in_format: in_format, ) end |
.sql_for(query_name:) ⇒ Object
62 63 64 65 66 |
# File 'lib/rails-sqlite-extras.rb', line 62 def self.sql_for(query_name:) File.read( sql_path_for(query_name: query_name) ) end |
.sql_path_for(query_name:) ⇒ Object
76 77 78 |
# File 'lib/rails-sqlite-extras.rb', line 76 def self.sql_path_for(query_name:) File.join(File.dirname(__FILE__), "/rails_sqlite_extras/queries/#{query_name}.sql") end |