Sha256: 1cf3f88d269a6cc8d062c1fefd9f7b076f6c16a118b4cfcd99c99d77f5f567ed

Contents?: true

Size: 996 Bytes

Versions: 11

Compression:

Stored size: 996 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 config(*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

11 entries across 11 versions & 1 rubygems

Version Path
linkedin2-0.0.16 lib/linkedin/configuration.rb
linkedin2-0.0.15 lib/linkedin/configuration.rb
linkedin2-0.0.14 lib/linkedin/configuration.rb
linkedin2-0.0.13 lib/linkedin/configuration.rb
linkedin2-0.0.12 lib/linkedin/configuration.rb
linkedin2-0.0.11 lib/linkedin/configuration.rb
linkedin2-0.0.10 lib/linkedin/configuration.rb
linkedin2-0.0.9 lib/linkedin/configuration.rb
linkedin2-0.0.8 lib/linkedin/configuration.rb
linkedin2-0.0.7 lib/linkedin/configuration.rb
linkedin2-0.0.6 lib/linkedin/configuration.rb