Sha256: 1e82be330329b51186669b0bdbb820d17403ba18147611a73d0230b14ed819a4

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 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
        return ENV.fetch('LISTEN_PORT', '3000').to_i if @service_name == 'app'

        @env.docker_compose_config
            .fetch('services')
            .fetch(@service_name)
            .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

3 entries across 3 versions & 1 rubygems

Version Path
orchestration-0.3.17 lib/orchestration/services/configuration_base.rb
orchestration-0.3.16 lib/orchestration/services/configuration_base.rb
orchestration-0.3.15 lib/orchestration/services/configuration_base.rb