class RequestLogAnalyzer::Database
Attributes
file_format[RW]
line_classes[R]
Public Class Methods
new(connection_identifier = nil)
click to toggle source
# File lib/request_log_analyzer/database.rb 11 def initialize(connection_identifier = nil) 12 @line_classes = [] 13 RequestLogAnalyzer::Database::Base.database = self 14 connect(connection_identifier) 15 end
Public Instance Methods
create_database_schema!()
click to toggle source
Creates the database schema and related ActiveRecord::Base subclasses that correspond to the file format definition. These ORM classes will later be used to create records in the database.
# File lib/request_log_analyzer/database.rb 70 def create_database_schema! 71 fileformat_classes.each { |klass| klass.create_table! } 72 end
default_classes()
click to toggle source
# File lib/request_log_analyzer/database.rb 23 def default_classes 24 [RequestLogAnalyzer::Database::Request, RequestLogAnalyzer::Database::Source, RequestLogAnalyzer::Database::Warning] 25 end
drop_database_schema!()
click to toggle source
Drops the table of all the ORM classes, and unregisters the classes
# File lib/request_log_analyzer/database.rb 75 def drop_database_schema! 76 file_format ? fileformat_classes.map(&:drop_table!) : orm_classes.map(&:drop_table!) 77 remove_orm_classes! 78 end
fileformat_classes()
click to toggle source
# File lib/request_log_analyzer/database.rb 62 def fileformat_classes 63 fail 'No file_format provided!' unless file_format 64 line_classes = file_format.line_definitions.map { |(_name, definition)| load_activerecord_class(definition) } 65 default_classes + line_classes 66 end
get_class(line_type)
click to toggle source
Returns the ORM class for the provided line type
# File lib/request_log_analyzer/database.rb 18 def get_class(line_type) 19 line_type = line_type.name if line_type.respond_to?(:name) 20 Object.const_get("#{line_type}_line".camelize) 21 end
load_activerecord_class(linedefinition_or_table)
click to toggle source
Loads an ActiveRecord-based class that correspond to the given parameter, which can either be a table name or a LineDefinition instance.
# File lib/request_log_analyzer/database.rb 46 def load_activerecord_class(linedefinition_or_table) 47 case linedefinition_or_table 48 when String, Symbol 49 klass_name = linedefinition_or_table.to_s.singularize.camelize 50 klass = RequestLogAnalyzer::Database::Base.subclass_from_table(linedefinition_or_table) 51 when RequestLogAnalyzer::LineDefinition 52 klass_name = "#{linedefinition_or_table.name}_line".camelize 53 klass = RequestLogAnalyzer::Database::Base.subclass_from_line_definition(linedefinition_or_table) 54 end 55 56 Object.const_set(klass_name, klass) 57 klass = Object.const_get(klass_name) 58 @line_classes << klass 59 klass 60 end
load_database_schema!()
click to toggle source
Loads the ORM classes by inspecting the tables in the current database
# File lib/request_log_analyzer/database.rb 28 def load_database_schema! 29 connection.tables.map do |table| 30 case table.to_sym 31 when :warnings then RequestLogAnalyzer::Database::Warning 32 when :sources then RequestLogAnalyzer::Database::Source 33 when :requests then RequestLogAnalyzer::Database::Request 34 else load_activerecord_class(table) 35 end 36 end 37 end
orm_classes()
click to toggle source
Returns an array of all the ActiveRecord-bases ORM classes for this database
# File lib/request_log_analyzer/database.rb 40 def orm_classes 41 default_classes + line_classes 42 end
register_default_orm_classes!()
click to toggle source
Registers the default ORM classes in the default namespace
# File lib/request_log_analyzer/database.rb 81 def register_default_orm_classes! 82 Object.const_set('Request', RequestLogAnalyzer::Database::Request) 83 Object.const_set('Source', RequestLogAnalyzer::Database::Source) 84 Object.const_set('Warning', RequestLogAnalyzer::Database::Warning) 85 end
remove_orm_classes!()
click to toggle source
Unregisters every ORM class constant
# File lib/request_log_analyzer/database.rb 88 def remove_orm_classes! 89 orm_classes.each do |klass| 90 if klass.respond_to?(:name) && !klass.name.blank? 91 klass_name = klass.name.split('::').last 92 Object.send(:remove_const, klass_name) if Object.const_defined?(klass_name) 93 end 94 end 95 end