Sha256: a6a56722fefa268198d114c9805d1dbc2518d5b34f8045cc69832149ace99ad6

Contents?: true

Size: 1.47 KB

Versions: 47

Compression:

Stored size: 1.47 KB

Contents

module EY
  module Serverside
    class Adapter
      class Arguments < Struct.new(:app, :config, :framework_env, :instances, :migrate, :ref, :repo, :stack, :verbose)

        def app=(app)
          enforce_nonempty!('app', app)
          super
        end

        def framework_env=(framework_env)
          enforce_nonempty!('framework_env', framework_env)
          super
        end

        def instances=(instances)
          unless instances.respond_to?(:each)
            raise ArgumentError, "Value for 'instances' must look like an enumerable."
          end

          if instances.empty?
            raise ArgumentError, "Value for 'instances' must not be empty."
          end

          instances.each do |instance|
            unless instance.respond_to?(:[]) && instance[:hostname] && instance[:roles]
              raise ArgumentError, "Malformed instance #{instance.inspect}; it must have both [:hostname] and [:roles]"
            end
          end

          super
        end

        def ref=(ref)
          enforce_nonempty!('ref', ref)
          super
        end

        def repo=(repo)
          enforce_nonempty!('repo', repo)
          super
        end

        def stack=(stack)
          enforce_nonempty!('stack', stack)
          super
        end

        private

        def enforce_nonempty!(name, value)
          if value.to_s.empty?
            raise ArgumentError, "Value for '#{name}' must be non-empty."
          end
        end

      end
    end
  end
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
engineyard-serverside-adapter-1.6.4 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.4.pre6 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.4.pre5 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.4.pre4 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.4.pre3 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.4.pre2 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.4.pre lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.6.3 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.35.pre.2 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.35.pre.1 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.35.pre lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.33 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.32 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.30 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.28 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.27 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.26 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.25 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.24 lib/engineyard-serverside-adapter/arguments.rb
engineyard-serverside-adapter-1.5.21 lib/engineyard-serverside-adapter/arguments.rb