Sha256: 11a6403ce3d9e433eebcffacc05815fda8635492617154f77ce5e5a1d2bbbc94

Contents?: true

Size: 773 Bytes

Versions: 15

Compression:

Stored size: 773 Bytes

Contents

module CanTango
  module Rules
    module Adaptor
      autoload_modules :Generic
      autoload_modules :ActiveRecord, :Mongoid

      # include adaptor depending on which ORM the object inherits from or includes
      def use_adaptor! base, object
        orm_map.each_pair do |orm, const|
          begin
            adaptor_class = const.constantize
            base.class.send(:include, adaptor(orm)) if object.kind_of?(adaptor_class)
          rescue 
            next
          end
        end
      end

      def adaptor orm
        "CanTango::Rules::Adaptor::#{orm.to_s.camelize}".constantize
      end

      def orm_map
        {
          :active_record => "ActiveRecord::Base",
          :mongoid => "Mongoid::Document"
        }
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
cantango-0.9.3.2 lib/cantango/rules/adaptor.rb
cantango-0.8.9.5 lib/cantango/rules/adaptor.rb
cantango-0.8.9.4 lib/cantango/rules/adaptor.rb
cantango-0.8.9.3 lib/cantango/rules/adaptor.rb
cantango-0.8.9.2 lib/cantango/rules/adaptor.rb
cantango-0.8.9.1 lib/cantango/rules/adaptor.rb
cantango-0.8.9 lib/cantango/rules/adaptor.rb
cantango-0.8.8.1 lib/cantango/rules/adaptor.rb
cantango-0.8.8 lib/cantango/rules/adaptor.rb
cantango-0.8.7 lib/cantango/rules/adaptor.rb
cantango-0.8.6.2 lib/cantango/rules/adaptor.rb
cantango-0.8.6.1 lib/cantango/rules/adaptor.rb
cantango-0.8.6 lib/cantango/rules/adaptor.rb
cantango-0.8.5.1 lib/cantango/rules/adaptor.rb
cantango-0.8.0 lib/cantango/rules/adaptor.rb