class Lolita::DBI::Base
Lolita::DBI::Base
is ORM Interface class, that handle the request to ORM classes. Depending on given class DBI::Base
detect which ORM class is used and include right adapter for that class. Other Lolita
classes that need to manipulate with data need to have dbi object or it can be created in that class. Lolita::DBI::Base
support Mongoid and ActiveRecord::Base, or details see Lolita::Adapter
.
Attributes
adapter[R]
adapter_name[R]
klass[R]
Public Class Methods
adapters()
click to toggle source
Return Array of available adapters.
# File lib/lolita/dbi/base.rb, line 48 def adapters Dir[File.expand_path(File.join(File.dirname(__FILE__),'..','adapter','**','*.rb'))].map {|f| File.basename(f,".rb").to_sym }.reject{|el| el==:abstract_adapter} end
create(class_object)
click to toggle source
# File lib/lolita/dbi/base.rb, line 10 def self.create(class_object) dbi = self.new(class_object) return dbi.adapter end
Public Instance Methods
connect_adapter()
click to toggle source
detect_adapter()
click to toggle source
Detect which ORM class is given and based on it connect Adapter
.
# File lib/lolita/dbi/base.rb, line 27 def detect_adapter if defined?(Mongoid) && defined?(Mongoid::Document) && self.klass.ancestors.include?(Mongoid::Document) @adapter_name=:mongoid elsif defined?(ActiveRecord) && defined?(ActiveRecord::Base) && self.klass.ancestors.include?(ActiveRecord::Base) @adapter_name=:active_record else raise NotORMClassError.new("Lolita::DBI::Base can not find appropriate #{self.klass} class adapter.") end end
method_missing(metod,*args,&block)
click to toggle source
# File lib/lolita/dbi/base.rb, line 42 def method_missing(metod,*args,&block) @adapter.send(metod,*args,&block) end