Sha256: db981739ea1b5065db843deeb2d1c9dba3ad18aadb6808f9038765554b034c39

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

module Enygma
  module Resource
    
    class InvalidInclusionClass < StandardError; end
    
    class << self
      def included(base)
        if defined?(ActiveRecord) && base.ancestors.include?(ActiveRecord::Base)
          configure_for_active_record(base)
        elsif defined?(Sequel) && base.ancestors.include?(Sequel::Model)
          configure_for_sequel_model(base)
        elsif defined?(Datamapper) && base.included_modules.include?(Datamapper::Resource)
          configure_for_datamapper_resource(base)
        else
          raise InvalidInclusionClass, "Enygma::Resource has to be included in a subclass of ActiveRecord::Base or Sequel::Model or a class including Datamapper::Resource! You might want to try just including Enygma."
        end
      end
    
      private
      
      def configure_for_active_record(base)
        base.__send__(:include, Enygma)
        base.configure_enygma do
          adapter   :active_record
          table     base
        end
      end
    
      def configure_for_sequel_model(base)
        base.__send__(:include, Enygma)
        base.configure_enygma do
          adapter   :sequel
          table     base
        end
      end
    
      def configure_for_datamapper_resource(base)
        raise "Datamapper support isn't implemented yet! Sorry!"
      end
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sander6-enygma-0.1.0 lib/enygma/resource.rb
sander6-enygma-0.1.1 lib/enygma/resource.rb