module Mobility::Backend::ClassMethods
Defines setup hooks for backend to customize model class.
Public Instance Methods
Build a subclass of this backend class for a given set of options @note This method also freezes the options hash to prevent it from
being changed.
@param [Class] model_class Class @param [Hash] options @return [Class] backend subclass
# File lib/mobility/backend.rb, line 169 def build_subclass(model_class, options) Class.new(self) do @model_class = model_class configure(options) if respond_to?(:configure) @options = options.freeze end end
# File lib/mobility/backend.rb, line 148 def inherited(subclass) subclass.instance_variable_set(:@setup_block, @setup_block) subclass.instance_variable_set(:@options, @options) subclass.instance_variable_set(:@model_class, @model_class) end
Show useful information about this backend class, if it has no name. @return [String]
# File lib/mobility/backend.rb, line 193 def inspect name ? super : "#<#{superclass.name}>" end
Create instance and class methods to access value on options hash @param [Symbol] name Name of option reader
# File lib/mobility/backend.rb, line 179 def option_reader(name) module_eval <<-EOM, __FILE__, __LINE__ + 1 def self.#{name} options[:#{name}] end def #{name} self.class.options[:#{name}] end EOM end
Assign block to be called on model class. @yield [attribute_names, options] @note When called multiple times, setup blocks will be appended
so that they are run together consecutively on class.
# File lib/mobility/backend.rb, line 136 def setup &block if @setup_block setup_block = @setup_block @setup_block = lambda do |*args| class_exec(*args, &setup_block) class_exec(*args, &block) end else @setup_block = block end end
Call setup block on a class with attributes and options. @param model_class Class to be setup-ed @param [Array<String>] attribute_names @param [Hash] options
# File lib/mobility/backend.rb, line 158 def setup_model(model_class, attribute_names) return unless setup_block = @setup_block model_class.class_exec(attribute_names, options, &setup_block) end
Returns valid option keys for this backend. This is overriden in backends to define which keys are valid for each backend class. @return [Array]
# File lib/mobility/backend.rb, line 128 def valid_keys [] end