Sha256: bf2d258a857dba9e07fd6e64b1cac7b7633e56ea2ecf52a629e6eadada916456

Contents?: true

Size: 1.21 KB

Versions: 71

Compression:

Stored size: 1.21 KB

Contents

module Extface
  class Mapping
    attr_reader :name, :i_klass, :i_param, :i_find_key, :i_extra_module
    def initialize(resource, options)
      @name = (options[:as] || resource).to_s
      
      @i_klass = (options[:interfaceable_type] || name.to_s.classify).to_s.constantize
      
      @i_param = options[:interfaceable_param] || "#{name}_id" #default #{resource}_id

      # key to find interfaceable in controller, when
      # :uuid then find_by! :uuid => params[:uuid]
      # :shop_uuid then find_by! :uuid => params[:shop_uuid]
      # :shop_id then find_by! :id => params[:shop_id]
      @i_find_key = @i_param[/^(#{resource}_|)(\w+)/,2]
      # FIXME not before schema load
      #raise "#{@i_klass.name} has no method #{@i_find_key}" unless @i_klass.new.respond_to? @i_find_key
      #raise "Did you forget to add 'has_extface_devices' in #{@i_klass.name} ?" unless @i_klass.new.respond_to? :extface_devices
      @i_extra_module = options[:controller_include].to_s.constantize if options[:controller_include].present?
    end
    
    def mount_point
      "#{name}_extface"
    end
    
    class << self
      def find(fullpath)
        Extface.mappings[fullpath[%r{/(\w+)_extface\/}, 1]]
      end
    end
  end
end

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
extface-0.4.5 lib/extface/mapping.rb
extface-0.4.4b lib/extface/mapping.rb
extface-0.4.4a lib/extface/mapping.rb
extface-0.4.4 lib/extface/mapping.rb
extface-0.4.3g lib/extface/mapping.rb
extface-0.4.3f lib/extface/mapping.rb
extface-0.4.3e lib/extface/mapping.rb
extface-0.4.3d lib/extface/mapping.rb
extface-0.4.3c lib/extface/mapping.rb
extface-0.4.3b lib/extface/mapping.rb
extface-0.4.3a lib/extface/mapping.rb
extface-0.4.2a lib/extface/mapping.rb
extface-0.4.2 lib/extface/mapping.rb
extface-0.4.1b lib/extface/mapping.rb
extface-0.4.1a lib/extface/mapping.rb
extface-0.4.0 lib/extface/mapping.rb
extface-0.3.0c lib/extface/mapping.rb
extface-0.3.0b lib/extface/mapping.rb
extface-0.3.0a lib/extface/mapping.rb
extface-0.3.0 lib/extface/mapping.rb