Sha256: 3e0800ba81bc8575409ceb7090fa1e7ecc07936e99ea4116a5e2e47b3c48d88f

Contents?: true

Size: 825 Bytes

Versions: 12

Compression:

Stored size: 825 Bytes

Contents

module Skylight
  module Util
    class Component

      attr_accessor :environment, :name

      NAME_FORMAT = /\A[a-z0-9-]+\z/
      DEFAULT_NAME = 'web'.freeze
      DEFAULT_ENVIRONMENT = 'production'.freeze

      def initialize(environment, name)
        @environment = environment || DEFAULT_ENVIRONMENT
        @name        = name || DEFAULT_NAME

        raise ArgumentError, "environment can't be blank" if @environment.empty?
        validate_string!(@environment, 'environment')
        validate_string!(@name, 'name')
      end

      def to_s
        "#{name}:#{environment}"
      end

      private

      def validate_string!(string, kind)
        return true if string =~ NAME_FORMAT
        raise ArgumentError, "#{kind} can only contain lowercase letters, numbers, and dashes"
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
skylight-3.1.5 lib/skylight/util/component.rb
skylight-3.1.4 lib/skylight/util/component.rb
skylight-3.1.3 lib/skylight/util/component.rb
skylight-3.1.3.beta lib/skylight/util/component.rb
skylight-3.1.2 lib/skylight/util/component.rb
skylight-3.1.1 lib/skylight/util/component.rb
skylight-3.1.0 lib/skylight/util/component.rb
skylight-3.1.0.beta3 lib/skylight/util/component.rb
skylight-3.1.0.beta2 lib/skylight/util/component.rb
skylight-3.1.0.beta lib/skylight/util/component.rb
skylight-3.0.0 lib/skylight/util/component.rb
skylight-3.0.0.beta lib/skylight/util/component.rb