Sha256: 031ed19b3db14f25b58abb371895b676117a6c4190c91f12313753b68d7033c6

Contents?: true

Size: 981 Bytes

Versions: 2

Compression:

Stored size: 981 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.to_h.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.to_h.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.3 lib/linkedin/configuration.rb
linkedin2-0.0.2 lib/linkedin/configuration.rb