module FeideeUtils::Record::Namespaced::ClassMethods
Attributes
child_classes[R]
Private Class Methods
contained_classes()
click to toggle source
# File lib/feidee_utils/record/namespaced.rb, line 38 def self.contained_classes @contained_classes end
Private Instance Methods
collect_subclass(child_class)
click to toggle source
Must be invoked by Record.inherited
# File lib/feidee_utils/record/namespaced.rb, line 12 def collect_subclass(child_class) @child_classes ||= Set.new @child_classes.add(child_class) end
generate_namespaced_record_classes(db)
click to toggle source
To use Record
with different databases, generate a set of classes for each db
# File lib/feidee_utils/record/namespaced.rb, line 19 def generate_namespaced_record_classes(db) @child_classes ||= Set.new this = self Module.new do |mod| const_set(:Database, Module.new { define_method("database") { db } define_method("environment") { mod } }) @contained_classes = this.child_classes.map do |child_class| if child_class.name.start_with? FeideeUtils.name class_name = child_class.name.sub(/#{FeideeUtils.name}::/, '') # Generate a const for the child class const_set(class_name, Class.new(child_class) { extend mod::Database }) end end def self.contained_classes @contained_classes end end end