Module: SchemaMonkey
- Extended by:
- ModuleSupport
- Defined in:
- lib/schema_monkey.rb,
lib/schema_monkey/railtie.rb,
lib/schema_monkey/version.rb,
lib/schema_monkey/middleware.rb,
lib/schema_monkey/module_support.rb,
lib/schema_monkey/active_record/base.rb,
lib/schema_monkey/active_record/schema_dumper.rb,
lib/schema_monkey/active_record/migration/command_recorder.rb,
lib/schema_monkey/active_record/connection_adapters/mysql_adapter.rb,
lib/schema_monkey/active_record/connection_adapters/sqlite3_adapter.rb,
lib/schema_monkey/active_record/connection_adapters/abstract_adapter.rb,
lib/schema_monkey/active_record/connection_adapters/table_definition.rb,
lib/schema_monkey/active_record/connection_adapters/schema_statements.rb,
lib/schema_monkey/active_record/connection_adapters/postgresql_adapter.rb
Defined Under Namespace
Modules: ActiveRecord, Middleware, ModuleSupport
Classes: Railtie
Constant Summary
collapse
- DBMS =
[:Postgresql, :Mysql, :Sqlite3]
- VERSION =
"0.1.1"
Class Method Summary
collapse
get_const, get_modules, include_if_defined, include_once, patch
Class Method Details
.include_adapters(base, dbm) ⇒ Object
44
45
46
47
48
|
# File 'lib/schema_monkey.rb', line 44
def self.include_adapters(base, dbm)
registered_modules.each do |mod|
include_if_defined(base, mod, "ActiveRecord::ConnectionAdapters::#{dbm}Adapter")
end
end
|
.insert ⇒ Object
30
31
32
33
34
|
# File 'lib/schema_monkey.rb', line 30
def self.insert
insert_modules
include_adapters(::ActiveRecord::ConnectionAdapters::AbstractAdapter, :Abstract)
insert_middleware
end
|
.insert_middleware(dbm = nil) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/schema_monkey.rb', line 62
def self.insert_middleware(dbm=nil)
@inserted ||= {}
if dbm
match = /\b#{dbm}\b/
reject = nil
else
match = nil
reject = /\b(#{DBMS.join('|')})\b/
end
registered_modules.each do |mod|
get_modules(mod, prefix: 'Middleware', and_self: true, match: match, reject: reject, recursive: true, respond_to: :insert).each do |middleware|
next if @inserted[middleware]
middleware.insert
@inserted[middleware] = true
end
end
end
|
.insert_modules ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/schema_monkey.rb', line 50
def self.insert_modules
registered_modules.each do |mod|
get_modules(mod, prefix: 'ActiveRecord', match: /\bActiveRecord\b/, recursive: true).each do |candidate|
next if candidate.is_a?(Class)
if (base = get_const(::ActiveRecord, candidate.to_s.sub(/^#{mod}::ActiveRecord::/, '')))
patch base, mod
end
end
mod.insert if mod.respond_to?(:insert) and mod != self
end
end
|
.register(mod) ⇒ Object
36
37
38
|
# File 'lib/schema_monkey.rb', line 36
def self.register(mod)
registered_modules << mod
end
|
.registered_modules ⇒ Object
40
41
42
|
# File 'lib/schema_monkey.rb', line 40
def self.registered_modules
@registered_modules ||= [self]
end
|