Sha256: 3e2942c0445de9f31d5d7825f15d1b6c1810f7b3561e512b96a3dfd8056030dd
Contents?: true
Size: 1016 Bytes
Versions: 8
Compression:
Stored size: 1016 Bytes
Contents
module Mobility module Backend =begin Adds {#for} method to backend to return ORM-specific backend. @example KeyValue backend for AR model class Post < ActiveRecord::Base # ... end Mobility::Backend::KeyValue.for(Post) #=> Mobility::Backend::ActiveRecord::KeyValue =end module OrmDelegator # @param [Class] model_class Class of model # @return [Class] Class of backend to use for model def for(model_class) if Loaded::ActiveRecord && model_class < ::ActiveRecord::Base const_get(name.split("::".freeze).insert(-2, "ActiveRecord".freeze).join("::".freeze)) elsif Loaded::Sequel && model_class < ::Sequel::Model const_get(name.split("::".freeze).insert(-2, "Sequel".freeze).join("::".freeze)) else raise ArgumentError, "#{name.split('::'.freeze).last} backend can only be used by ActiveRecord or Sequel models".freeze end end def self.included(base) base.extend(self) end end end end
Version data entries
8 entries across 8 versions & 1 rubygems