Module: RequestLogAnalyzer::Database::Connection
- Included in:
- RequestLogAnalyzer::Database
- Defined in:
- lib/request_log_analyzer/database/connection.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.from_string(string) ⇒ Object
2 3 4 5 6 7 8 9 10 11 |
# File 'lib/request_log_analyzer/database/connection.rb', line 2 def self.from_string(string) hash = {} if string =~ /^(?:\w+=(?:[^;])*;)*\w+=(?:[^;])*$/ string.scan(/(\w+)=([^;]*);?/) { |variable, value| hash[variable.to_sym] = value } elsif string =~ /^(\w+)\:\/\/(?:(?:([^:]+)(?:\:([^:]+))?\@)?([\w\.-]+)\/)?([\w\:\-\.\/]+)$/ hash[:adapter], hash[:username], hash[:password], hash[:host], hash[:database] = Regexp.last_match[1], Regexp.last_match[2], Regexp.last_match[3], Regexp.last_match[4], Regexp.last_match[5] hash.delete_if { |_k, v| v.nil? } end hash.empty? ? nil : hash end |
Instance Method Details
#connect(connection_identifier) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/request_log_analyzer/database/connection.rb', line 13 def connect(connection_identifier) if connection_identifier.is_a?(Hash) ActiveRecord::Base.establish_connection(connection_identifier) elsif connection_identifier == ':memory:' ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') elsif connection_hash = RequestLogAnalyzer::Database::Connection.from_string(connection_identifier) ActiveRecord::Base.establish_connection(connection_hash) elsif connection_identifier.is_a?(String) # Normal SQLite 3 database file ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: connection_identifier) elsif connection_identifier.nil? nil else fail "Cannot connect with this connection_identifier: #{connection_identifier.inspect}" end end |
#connection ⇒ Object
33 34 35 |
# File 'lib/request_log_analyzer/database/connection.rb', line 33 def connection RequestLogAnalyzer::Database::Base.connection end |
#disconnect ⇒ Object
29 30 31 |
# File 'lib/request_log_analyzer/database/connection.rb', line 29 def disconnect RequestLogAnalyzer::Database::Base.remove_connection end |