Sha256: 194ed29b520ed0d93467ee8381f61b53d775fcf3e60a158e4cdb2b462da0ef9f

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents


module ConfigureMe

  class Base
    extend ActiveModel::Callbacks
    include AttributeMethods
    include Caching
    include Identity
    include Naming
    include Nesting
    include Persistence
    include Persisting
    include Validations
    extend Loading
    include ActiveModel::Conversion

    def persisted?
      true
    end

    def to_key
      if persisted?
        key = parent_config.nil? ? [] : parent_config.to_key
        key << self.config_name
        key
      else
        nil
      end
    end

    def to_param
      if persisted?
        to_key.join('-')
      else
        nil
      end
    end

    class << self
      def inherited(subclass)
        super
        configs << subclass
      end

      def method_missing(method_sym, *args)
        if instance.respond_to?(method_sym)
          instance.send(method_sym, *args)
        else
          super
        end
      end

      def respond_to?(method_sym, include_private = false)
        instance.children.each_pair do |name, instance|
          if name.to_s.eql?(method_sym.to_s)
            return true
          end
        end
        if class_settings.key?(method_sym)
          return true
        end
        super
      end

      def find_by_id(id)
        configs.each do |config|
          if config.config_key.eql?(id)
            return config.instance
          end
        end
        nil
      end

      private

      def configs
        @configs ||= []
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
configure_me-0.5.0 lib/configure_me/base.rb
configure_me-0.4.1 lib/configure_me/base.rb
configure_me-0.4.0 lib/configure_me/base.rb