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