Sha256: 819fd710241142c2ce9a0f7362914b3f7f23b84d288981dcaa8e3a2277d32b4d

Contents?: true

Size: 997 Bytes

Versions: 2

Compression:

Stored size: 997 Bytes

Contents

module LinkedIn
  module Configuration
    module ClassConfiguration
      def config
        @config ||= reset
      end

      def reset
        @config = OpenStruct.new default_config
      end
    end

    module InstanceConfiguration
      def config
        @config ||= reset
      end

      def reset
        @config = self.class.config.dup
      end
    end

    module BaseConfiguration
      def configure(config={}, &block)
        self.config.marshal_load self.config.marshal_dump.merge(config)

        yield self.config if block_given?

        self.config
      end

      def load(file_path='linkedin.yml')
        config = YAML::load(File.open(file_path)).symbolize_keys
        configure config
      end

      def defaults(*keys)
        config.marshal_dump.slice *keys
      end
    end

    include BaseConfiguration
    include InstanceConfiguration

    def self.included(klass)
      klass.extend BaseConfiguration
      klass.extend ClassConfiguration
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
linkedin2-0.0.5 lib/linkedin/configuration.rb
linkedin2-0.0.4 lib/linkedin/configuration.rb