Sha256: 3117cba8656784456ba179b9c5acc6e378e3c718a5faba256d50dbea0635b139

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Orchestration
  module Services
    module ConfigurationBase
      attr_reader :settings, :service_name, :env

      def self.included(base)
        base.extend(ClassMethods)
      end

      module ClassMethods
        def service_name=(val)
          @service_name = val
        end

        def service_name
          return @service_name unless @service_name.nil?

          raise ArgumentError,
                "Must call `self.name=` on #{self.class.service_name}"
        end
      end

      def initialize(env, service_name = nil)
        @env = env
        @service_name = service_name || self.class.service_name
      end

      def host
        '127.0.0.1'
      end

      def local_port
        key = @service_name == 'app' ? 'nginx_proxy' : @service_name

        return ENV.fetch('LISTEN_PORT', '3000').to_i if key == 'nginx_proxy'

        @env.docker_compose_config
            .fetch('services')
            .fetch(key)
            .fetch('ports')
            .first
            .partition(':')
            .first
            .to_i
      end

      def yaml(content)
        # Whitelist `Symbol` and permit aliases:
        YAML.safe_load(content, [Symbol], [], true)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
orchestration-0.3.8 lib/orchestration/services/configuration_base.rb
orchestration-0.3.7 lib/orchestration/services/configuration_base.rb
orchestration-0.3.6 lib/orchestration/services/configuration_base.rb
orchestration-0.3.5 lib/orchestration/services/configuration_base.rb