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.2"- @@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
82 83 84 85 86 87 88 |
# File 'lib/rails-sqlite-extras.rb', line 82 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
94 95 96 |
# File 'lib/rails-sqlite-extras.rb', line 94 def self.database_url @@database_url || ENV["RUBY_PG_EXTRAS_DATABASE_URL"] || ENV.fetch("DATABASE_URL") end |
.database_url=(value) ⇒ Object
90 91 92 |
# File 'lib/rails-sqlite-extras.rb', line 90 def self.database_url=(value) @@database_url = value end |
.description_for(query_name:) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/rails-sqlite-extras.rb', line 70 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
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rails-sqlite-extras.rb', line 39 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
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rails-sqlite-extras.rb', line 27 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
64 65 66 67 68 |
# File 'lib/rails-sqlite-extras.rb', line 64 def self.sql_for(query_name:) File.read( sql_path_for(query_name: query_name) ) end |
.sql_path_for(query_name:) ⇒ Object
78 79 80 |
# File 'lib/rails-sqlite-extras.rb', line 78 def self.sql_path_for(query_name:) File.join(File.dirname(__FILE__), "/rails_sqlite_extras/queries/#{query_name}.sql") end |