Sha256: 6846bca5320df67c2aa0ea50bd81dc890fb1ce5b3c8e3bdf9b3e1a1c8923a64e

Contents?: true

Size: 1.34 KB

Versions: 13

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module Nonnative
  class Configuration
    class << self
      def load_file(path)
        file = YAML.load_file(path)

        new.tap do |c|
          c.strategy = file['strategy']

          processes(file, c)
          servers(file, c)
        end
      end

      private

      def processes(file, config)
        processes = file['processes'] || []
        processes.each do |fd|
          config.process do |d|
            d.command = fd['command']
            d.timeout = fd['timeout']
            d.port = fd['port']
            d.file = fd['file']
          end
        end
      end

      def servers(file, config)
        servers = file['servers'] || []
        servers.each do |fd|
          config.server do |s|
            s.klass = Object.const_get(fd['klass'])
            s.timeout = fd['timeout']
            s.port = fd['port']
          end
        end
      end
    end

    def initialize
      self.strategy = :before
      self.processes = []
      self.servers = []
    end

    attr_accessor :strategy
    attr_accessor :processes
    attr_accessor :servers

    def process
      process = Nonnative::ConfigurationProcess.new
      yield process

      processes << process
    end

    def server
      server = Nonnative::ConfigurationServer.new
      yield server

      servers << server
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
nonnative-1.14.0 lib/nonnative/configuration.rb
nonnative-1.13.0 lib/nonnative/configuration.rb
nonnative-1.12.0 lib/nonnative/configuration.rb
nonnative-1.11.0 lib/nonnative/configuration.rb
nonnative-1.10.0 lib/nonnative/configuration.rb
nonnative-1.9.0 lib/nonnative/configuration.rb
nonnative-1.8.1 lib/nonnative/configuration.rb
nonnative-1.8.0 lib/nonnative/configuration.rb
nonnative-1.7.0 lib/nonnative/configuration.rb
nonnative-1.6.0 lib/nonnative/configuration.rb
nonnative-1.5.0 lib/nonnative/configuration.rb
nonnative-1.4.0 lib/nonnative/configuration.rb
nonnative-1.3.0 lib/nonnative/configuration.rb