engineyard 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +134 -3
- data/lib/engineyard/cli.rb +2 -2
- data/lib/engineyard/cli/web.rb +2 -2
- data/lib/engineyard/model/#app.rb# +23 -0
- data/lib/engineyard/model/environment.rb +2 -2
- data/lib/engineyard/model/instance.rb +21 -21
- data/lib/engineyard/thor.rb +2 -2
- data/lib/engineyard/version.rb +1 -1
- data/spec/ey/deploy_spec.rb +11 -11
- data/spec/ey/rollback_spec.rb +3 -3
- data/spec/ey/web/disable_spec.rb +2 -2
- data/spec/ey/web/enable_spec.rb +2 -2
- data/spec/support/shared_behavior.rb +13 -13
- metadata +27 -73
    
        data/README.rdoc
    CHANGED
    
    | @@ -1,7 +1,138 @@ | |
| 1 1 | 
             
            = ey
         | 
| 2 2 |  | 
| 3 | 
            -
            Description goes here.
         | 
| 4 3 |  | 
| 5 | 
            -
             | 
| 4 | 
            +
            Command:
         | 
| 5 | 
            +
              ey deploy
         | 
| 6 6 |  | 
| 7 | 
            -
             | 
| 7 | 
            +
              Options:
         | 
| 8 | 
            +
                -r, --branch, --tag, [--ref=REF]       # Git ref to deploy. May be a branch, a tag, or a SHA.
         | 
| 9 | 
            +
                            [--ignore-bad-master]      # Force a deploy even if the master is in a bad state
         | 
| 10 | 
            +
                -v, [--verbose]                        # Be verbose
         | 
| 11 | 
            +
                -a, [--app=APP]                        # Name of the application to deploy
         | 
| 12 | 
            +
                -m, [--migrate=MIGRATE]                # Run migrations via [MIGRATE], defaults to 'rake db:migrate'; use --no-migrate to avoid running migrations
         | 
| 13 | 
            +
                            [--ignore-default-branch]  # Force a deploy of the specified branch even if a default is set
         | 
| 14 | 
            +
                -e, [--environment=ENVIRONMENT]        # Environment in which to deploy this application
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              Description:
         | 
| 17 | 
            +
                This command must be run with the current directory containing the app to be deployed. If ey.yml specifies a default branch then the ref parameter can be omitted. Furthermore,
         | 
| 18 | 
            +
                if a default branch is specified but a different command is supplied the deploy will fail unless --ignore-default-branch is used.
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                Migrations are run by default with 'rake db:migrate'. A different command can be specified via --migrate "ruby do_migrations.rb". Migrations can also be skipped entirely by
         | 
| 21 | 
            +
                using --no-migrate.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            Command:
         | 
| 24 | 
            +
              ey environments
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              Options:
         | 
| 27 | 
            +
                -s, [--simple]
         | 
| 28 | 
            +
                -a, [--all]
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              Description:
         | 
| 31 | 
            +
                By default, environments for this app are displayed. The --all option will display all environments, including those for this app.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            Command:
         | 
| 34 | 
            +
              ey logs
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              Options:
         | 
| 37 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment with the interesting logs
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              Description:
         | 
| 40 | 
            +
                Displays Engine Yard configuration logs for all servers in the environment. If recipes were uploaded to the environment & run, their logs will also be displayed beneath the
         | 
| 41 | 
            +
                main configuration logs.
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            Command:
         | 
| 44 | 
            +
              ey rebuild
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              Options:
         | 
| 47 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment to rebuild
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              Description:
         | 
| 50 | 
            +
                Engine Yard's main configuration run occurs on all servers. Mainly used to fix failed configuration of new or existing servers, or to update servers to latest Engine Yard stack
         | 
| 51 | 
            +
                (e.g. to apply an Engine Yard supplied security patch).
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                Note that uploaded recipes are also run after the main configuration run has successfully completed.
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            Command:
         | 
| 56 | 
            +
              ey rollback
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              Options:
         | 
| 59 | 
            +
                -v, [--verbose]                  # Be verbose
         | 
| 60 | 
            +
                -a, [--app=APP]                  # Name of the application to roll back
         | 
| 61 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment in which to roll back the application
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              Description:
         | 
| 64 | 
            +
                Uses code from previous deploy in the "/data/APP_NAME/releases" directory on remote server(s) to restart application servers.
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            Command:
         | 
| 67 | 
            +
              ey recipes apply
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              Options:
         | 
| 70 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment in which to apply recipes
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              Description:
         | 
| 73 | 
            +
                This is similar to 'ey rebuild' except Engine Yard's main configuration step is skipped.
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            Command:
         | 
| 76 | 
            +
              ey recipes upload
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              Options:
         | 
| 79 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment that will receive the recipes
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              Description:
         | 
| 82 | 
            +
                The current directory should contain a subdirectory named "cookbooks" to be uploaded.
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            Command:
         | 
| 85 | 
            +
              ey recipes download
         | 
| 86 | 
            +
             | 
| 87 | 
            +
              Options:
         | 
| 88 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment for which to download the recipes
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              Description:
         | 
| 91 | 
            +
                The recipes will be unpacked into a directory called "cookbooks" in the current directory.
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                If the cookbooks directory already exists, an error will be raised.
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            Command:
         | 
| 96 | 
            +
              ey web enable
         | 
| 97 | 
            +
             | 
| 98 | 
            +
              Options:
         | 
| 99 | 
            +
                -v, [--verbose]                  # Be verbose
         | 
| 100 | 
            +
                -a, [--app=APP]                  # Name of the application whose maintenance page will be removed
         | 
| 101 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment on which to take down the maintenance page
         | 
| 102 | 
            +
             | 
| 103 | 
            +
              Remove the maintenance page for this application in the given environment.
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            Command:
         | 
| 106 | 
            +
              ey web disable
         | 
| 107 | 
            +
             | 
| 108 | 
            +
              Options:
         | 
| 109 | 
            +
                -v, [--verbose]                  # Be verbose
         | 
| 110 | 
            +
                -a, [--app=APP]                  # Name of the application whose maintenance page will be put up
         | 
| 111 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment on which to put up the maintenance page
         | 
| 112 | 
            +
             | 
| 113 | 
            +
              Description:
         | 
| 114 | 
            +
                The maintenance page is taken from the app currently being deployed. This means that you can customize maintenance pages to tell users the reason for downtime on every
         | 
| 115 | 
            +
                particular deploy.
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                Maintenance pages searched for in order of decreasing priority: * public/maintenance.html.custom * public/maintenance.html.tmp * public/maintenance.html *
         | 
| 118 | 
            +
                public/system/maintenance.html.default
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            Command:
         | 
| 121 | 
            +
              ey ssh
         | 
| 122 | 
            +
             | 
| 123 | 
            +
              Options:
         | 
| 124 | 
            +
                    [--utilities=one two three]  # Run command on the utility servers with the given names. If no names are given, run on all utility servers.
         | 
| 125 | 
            +
                    [--app-servers]              # Run command on all application servers
         | 
| 126 | 
            +
                    [--db-servers]               # Run command on the database servers
         | 
| 127 | 
            +
                    [--db-master]                # Run command on the master database server
         | 
| 128 | 
            +
                -a, [--all]                      # Run command on all servers
         | 
| 129 | 
            +
                    [--db-slaves]                # Run command on the slave database servers
         | 
| 130 | 
            +
                -e, [--environment=ENVIRONMENT]  # Environment to ssh into
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              Description:
         | 
| 133 | 
            +
                If a command is supplied, it will be run, otherwise a session will be opened. The application master is used for environments with clusters. Option --all requires a command to
         | 
| 134 | 
            +
                be supplied and runs it on all servers.
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                Note: this command is a bit picky about its ordering. To run a command with arguments on all servers, like "rm -f /some/file", you need to order it like so:
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                $ ey ssh "rm -f /some/file" -e my-environment --all
         | 
    
        data/lib/engineyard/cli.rb
    CHANGED
    
    | @@ -61,7 +61,7 @@ module EY | |
| 61 61 |  | 
| 62 62 | 
             
                  EY.ui.info "Connecting to the server..."
         | 
| 63 63 |  | 
| 64 | 
            -
                   | 
| 64 | 
            +
                  loudly_check_engineyard_serverside(environment)
         | 
| 65 65 |  | 
| 66 66 | 
             
                  EY.ui.info "Beginning deploy for '#{app.name}' in '#{environment.name}' on server..."
         | 
| 67 67 |  | 
| @@ -143,7 +143,7 @@ module EY | |
| 143 143 | 
             
                  app = fetch_app(options[:app])
         | 
| 144 144 | 
             
                  env = fetch_environment(options[:environment], app)
         | 
| 145 145 |  | 
| 146 | 
            -
                   | 
| 146 | 
            +
                  loudly_check_engineyard_serverside(env)
         | 
| 147 147 |  | 
| 148 148 | 
             
                  EY.ui.info("Rolling back '#{app.name}' in '#{env.name}'")
         | 
| 149 149 | 
             
                  if env.rollback(app, options[:verbose])
         | 
    
        data/lib/engineyard/cli/web.rb
    CHANGED
    
    | @@ -12,7 +12,7 @@ module EY | |
| 12 12 | 
             
                  def enable
         | 
| 13 13 | 
             
                    app         = fetch_app(options[:app])
         | 
| 14 14 | 
             
                    environment = fetch_environment(options[:environment], app)
         | 
| 15 | 
            -
                     | 
| 15 | 
            +
                    loudly_check_engineyard_serverside(environment)
         | 
| 16 16 | 
             
                    EY.ui.info "Taking down maintenance page for '#{app.name}' in '#{environment.name}'"
         | 
| 17 17 | 
             
                    environment.take_down_maintenance_page(app, options[:verbose])
         | 
| 18 18 | 
             
                  end
         | 
| @@ -39,7 +39,7 @@ module EY | |
| 39 39 | 
             
                  def disable
         | 
| 40 40 | 
             
                    app         = fetch_app(options[:app])
         | 
| 41 41 | 
             
                    environment = fetch_environment(options[:environment], app)
         | 
| 42 | 
            -
                     | 
| 42 | 
            +
                    loudly_check_engineyard_serverside(environment)
         | 
| 43 43 | 
             
                    EY.ui.info "Putting up maintenance page for '#{app.name}' in '#{environment.name}'"
         | 
| 44 44 | 
             
                    environment.put_up_maintenance_page(app, options[:verbose])
         | 
| 45 45 | 
             
                  end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            bmodule EY
         | 
| 2 | 
            +
              module Model
         | 
| 3 | 
            +
                class App < ApiStruct.new(:name, :repository_uri, :environments, :api)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                  def self.from_hash(hash)
         | 
| 6 | 
            +
                    super.tap do |app|
         | 
| 7 | 
            +
                      app.environments = Environment.from_array(app.environments, :api => app.api)
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def sole_environment
         | 
| 12 | 
            +
                    if environments.size == 1
         | 
| 13 | 
            +
                      environments.first
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  def sole_environment!
         | 
| 18 | 
            +
                    sole_environment or raise NoSingleEnvironmentError.new(self)
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -31,8 +31,8 @@ module EY | |
| 31 31 | 
             
                    master
         | 
| 32 32 | 
             
                  end
         | 
| 33 33 |  | 
| 34 | 
            -
                  def  | 
| 35 | 
            -
                    app_master!. | 
| 34 | 
            +
                  def ensure_engineyard_serverside_present(&blk)
         | 
| 35 | 
            +
                    app_master!.ensure_engineyard_serverside_present(&blk)
         | 
| 36 36 | 
             
                  end
         | 
| 37 37 |  | 
| 38 38 | 
             
                  def deploy(app, ref, deploy_options={})
         | 
| @@ -3,11 +3,11 @@ require 'escape' | |
| 3 3 | 
             
            module EY
         | 
| 4 4 | 
             
              module Model
         | 
| 5 5 | 
             
                class Instance < ApiStruct.new(:id, :role, :name, :status, :amazon_id, :public_hostname, :environment)
         | 
| 6 | 
            -
                   | 
| 7 | 
            -
                  EXIT_STATUS = Hash.new { |h,k| raise EY::Error, " | 
| 6 | 
            +
                  ENGINEYARD_SERVERSIDE_VERSION = ENV["ENGINEYARD_SERVERSIDE_VERSION"] || "1.2.0"
         | 
| 7 | 
            +
                  EXIT_STATUS = Hash.new { |h,k| raise EY::Error, "engineyard-serverside version checker exited with unknown status code #{k}" }
         | 
| 8 8 | 
             
                  EXIT_STATUS.merge!({
         | 
| 9 9 | 
             
                    255 => :ssh_failed,
         | 
| 10 | 
            -
                    1   => : | 
| 10 | 
            +
                    1   => :engineyard_serverside_missing,
         | 
| 11 11 | 
             
                    0   => :ok,
         | 
| 12 12 | 
             
                  })
         | 
| 13 13 |  | 
| @@ -30,7 +30,7 @@ module EY | |
| 30 30 | 
             
                      deploy_args << "--migrate" << migration_command
         | 
| 31 31 | 
             
                    end
         | 
| 32 32 |  | 
| 33 | 
            -
                     | 
| 33 | 
            +
                    invoke_engineyard_serverside(deploy_args, verbose)
         | 
| 34 34 | 
             
                  end
         | 
| 35 35 |  | 
| 36 36 | 
             
                  def rollback(app, extra_configuration=nil, verbose=false)
         | 
| @@ -43,16 +43,16 @@ module EY | |
| 43 43 | 
             
                      deploy_args << '--config' << extra_configuration.to_json
         | 
| 44 44 | 
             
                    end
         | 
| 45 45 |  | 
| 46 | 
            -
                     | 
| 46 | 
            +
                    invoke_engineyard_serverside(deploy_args, verbose)
         | 
| 47 47 | 
             
                  end
         | 
| 48 48 |  | 
| 49 49 |  | 
| 50 50 | 
             
                  def put_up_maintenance_page(app, verbose=false)
         | 
| 51 | 
            -
                     | 
| 51 | 
            +
                    invoke_engineyard_serverside(['enable_maintenance_page', '--app', app.name], verbose)
         | 
| 52 52 | 
             
                  end
         | 
| 53 53 |  | 
| 54 54 | 
             
                  def take_down_maintenance_page(app, verbose=false)
         | 
| 55 | 
            -
                     | 
| 55 | 
            +
                    invoke_engineyard_serverside(['disable_maintenance_page', '--app', app.name], verbose)
         | 
| 56 56 | 
             
                  end
         | 
| 57 57 |  | 
| 58 58 |  | 
| @@ -60,32 +60,32 @@ module EY | |
| 60 60 | 
             
                    !["db_master", "db_slave"].include?(role.to_s)
         | 
| 61 61 | 
             
                  end
         | 
| 62 62 |  | 
| 63 | 
            -
                  def  | 
| 64 | 
            -
                    case  | 
| 63 | 
            +
                  def ensure_engineyard_serverside_present
         | 
| 64 | 
            +
                    case engineyard_serverside_status = engineyard_serverside_check
         | 
| 65 65 | 
             
                    when :ssh_failed
         | 
| 66 66 | 
             
                      raise EnvironmentError, "SSH connection to #{hostname} failed"
         | 
| 67 | 
            -
                    when : | 
| 67 | 
            +
                    when :engineyard_serverside_missing
         | 
| 68 68 | 
             
                      yield :installing if block_given?
         | 
| 69 | 
            -
                       | 
| 69 | 
            +
                      install_engineyard_serverside
         | 
| 70 70 | 
             
                    when :ok
         | 
| 71 71 | 
             
                      # no action needed
         | 
| 72 72 | 
             
                    else
         | 
| 73 | 
            -
                      raise EY::Error, "Internal error: Unexpected status from Instance# | 
| 73 | 
            +
                      raise EY::Error, "Internal error: Unexpected status from Instance#engineyard_serverside_check; got #{engineyard_serverside_status.inspect}"
         | 
| 74 74 | 
             
                    end
         | 
| 75 75 | 
             
                  end
         | 
| 76 76 |  | 
| 77 | 
            -
                  def  | 
| 78 | 
            -
                     | 
| 77 | 
            +
                  def engineyard_serverside_check
         | 
| 78 | 
            +
                    escaped_engineyard_serverside_version = ENGINEYARD_SERVERSIDE_VERSION.gsub(/\./, '\.')
         | 
| 79 79 |  | 
| 80 80 | 
             
                    if ENV["NO_SSH"]
         | 
| 81 81 | 
             
                      :ok
         | 
| 82 82 | 
             
                    else
         | 
| 83 | 
            -
                      ssh "#{gem_path} list  | 
| 83 | 
            +
                      ssh "#{gem_path} list engineyard-serverside | grep \"engineyard-serverside\" | egrep -q '#{escaped_engineyard_serverside_version}[,)]'", false
         | 
| 84 84 | 
             
                      EXIT_STATUS[$?.exitstatus]
         | 
| 85 85 | 
             
                    end
         | 
| 86 86 | 
             
                  end
         | 
| 87 87 |  | 
| 88 | 
            -
                  def  | 
| 88 | 
            +
                  def install_engineyard_serverside
         | 
| 89 89 | 
             
                    ssh(Escape.shell_command([
         | 
| 90 90 | 
             
                          'sudo', 'sh', '-c',
         | 
| 91 91 | 
             
                          # rubygems looks at *.gem in its current directory for
         | 
| @@ -94,7 +94,7 @@ module EY | |
| 94 94 | 
             
                          #
         | 
| 95 95 | 
             
                          # rubygems help suggests that --remote will disable this
         | 
| 96 96 | 
             
                          # behavior, but it doesn't.
         | 
| 97 | 
            -
                          "cd `mktemp -d` && #{gem_path} install  | 
| 97 | 
            +
                          "cd `mktemp -d` && #{gem_path} install engineyard-serverside --no-rdoc --no-ri -v #{ENGINEYARD_SERVERSIDE_VERSION}"]))
         | 
| 98 98 | 
             
                  end
         | 
| 99 99 |  | 
| 100 100 | 
             
                private
         | 
| @@ -112,8 +112,8 @@ module EY | |
| 112 112 | 
             
                    end
         | 
| 113 113 | 
             
                  end
         | 
| 114 114 |  | 
| 115 | 
            -
                  def  | 
| 116 | 
            -
                    start = [ | 
| 115 | 
            +
                  def invoke_engineyard_serverside(deploy_args, verbose=false)
         | 
| 116 | 
            +
                    start = [engineyard_serverside_path, "_#{ENGINEYARD_SERVERSIDE_VERSION}_", 'deploy']
         | 
| 117 117 | 
             
                    instance_args = environment.instances.find_all do |inst|
         | 
| 118 118 | 
             
                      inst.has_app_code?
         | 
| 119 119 | 
             
                    end.inject(['--instances']) do |command, inst|
         | 
| @@ -132,8 +132,8 @@ module EY | |
| 132 132 | 
             
                    ssh cmd
         | 
| 133 133 | 
             
                  end
         | 
| 134 134 |  | 
| 135 | 
            -
                  def  | 
| 136 | 
            -
                    "/usr/local/ey_resin/ruby/bin/ | 
| 135 | 
            +
                  def engineyard_serverside_path
         | 
| 136 | 
            +
                    "/usr/local/ey_resin/ruby/bin/engineyard-serverside"
         | 
| 137 137 | 
             
                  end
         | 
| 138 138 |  | 
| 139 139 | 
             
                  def gem_path
         | 
    
        data/lib/engineyard/thor.rb
    CHANGED
    
    | @@ -11,8 +11,8 @@ module EY | |
| 11 11 | 
             
                  @repo ||= EY::Repo.new
         | 
| 12 12 | 
             
                end
         | 
| 13 13 |  | 
| 14 | 
            -
                def  | 
| 15 | 
            -
                  environment. | 
| 14 | 
            +
                def loudly_check_engineyard_serverside(environment)
         | 
| 15 | 
            +
                  environment.ensure_engineyard_serverside_present do |action|
         | 
| 16 16 | 
             
                    case action
         | 
| 17 17 | 
             
                    when :installing
         | 
| 18 18 | 
             
                      EY.ui.warn "Instance does not have server-side component installed"
         | 
    
        data/lib/engineyard/version.rb
    CHANGED
    
    
    
        data/spec/ey/deploy_spec.rb
    CHANGED
    
    | @@ -37,13 +37,13 @@ describe "ey deploy" do | |
| 37 37 |  | 
| 38 38 | 
             
              def verify_ran(scenario)
         | 
| 39 39 | 
             
                @out.should match(/Beginning deploy for.*#{scenario[:application]}.*#{scenario[:environment]}/)
         | 
| 40 | 
            -
                @ssh_commands.should have_command_like(/ | 
| 40 | 
            +
                @ssh_commands.should have_command_like(/engineyard-serverside.*deploy.*--app #{scenario[:application]}/)
         | 
| 41 41 | 
             
              end
         | 
| 42 42 |  | 
| 43 43 | 
             
              # common behavior
         | 
| 44 44 | 
             
              it_should_behave_like "it takes an environment name"
         | 
| 45 45 | 
             
              it_should_behave_like "it takes an app name"
         | 
| 46 | 
            -
              it_should_behave_like "it invokes  | 
| 46 | 
            +
              it_should_behave_like "it invokes engineyard-serverside"
         | 
| 47 47 | 
             
            end
         | 
| 48 48 |  | 
| 49 49 | 
             
            describe "ey deploy" do
         | 
| @@ -81,20 +81,20 @@ describe "ey deploy" do | |
| 81 81 | 
             
                  api_scenario "one app, one environment"
         | 
| 82 82 | 
             
                end
         | 
| 83 83 |  | 
| 84 | 
            -
                it "finds  | 
| 84 | 
            +
                it "finds engineyard-serverside despite its being buried in the filesystem" do
         | 
| 85 85 | 
             
                  ey "deploy"
         | 
| 86 | 
            -
                  @ssh_commands.last.should =~ %r{/usr/local/ey_resin/ruby/bin/ | 
| 86 | 
            +
                  @ssh_commands.last.should =~ %r{/usr/local/ey_resin/ruby/bin/engineyard-serverside}
         | 
| 87 87 | 
             
                end
         | 
| 88 88 |  | 
| 89 89 | 
             
                it "defaults to 'rake db:migrate'" do
         | 
| 90 90 | 
             
                  ey "deploy"
         | 
| 91 | 
            -
                  @ssh_commands.last.should =~ / | 
| 91 | 
            +
                  @ssh_commands.last.should =~ /engineyard-serverside.*deploy/
         | 
| 92 92 | 
             
                  @ssh_commands.last.should =~ /--migrate 'rake db:migrate'/
         | 
| 93 93 | 
             
                end
         | 
| 94 94 |  | 
| 95 95 | 
             
                it "can be disabled with --no-migrate" do
         | 
| 96 96 | 
             
                  ey "deploy --no-migrate"
         | 
| 97 | 
            -
                  @ssh_commands.last.should =~ / | 
| 97 | 
            +
                  @ssh_commands.last.should =~ /engineyard-serverside.*deploy/
         | 
| 98 98 | 
             
                  @ssh_commands.last.should_not =~ /--migrate/
         | 
| 99 99 | 
             
                end
         | 
| 100 100 |  | 
| @@ -121,7 +121,7 @@ describe "ey deploy" do | |
| 121 121 |  | 
| 122 122 | 
             
                  it "does not migrate by default" do
         | 
| 123 123 | 
             
                    ey "deploy"
         | 
| 124 | 
            -
                    @ssh_commands.last.should =~ / | 
| 124 | 
            +
                    @ssh_commands.last.should =~ /engineyard-serverside.*deploy/
         | 
| 125 125 | 
             
                    @ssh_commands.last.should_not =~ /--migrate/
         | 
| 126 126 | 
             
                  end
         | 
| 127 127 |  | 
| @@ -221,7 +221,7 @@ describe "ey deploy" do | |
| 221 221 | 
             
                    File.unlink("ey.yml")
         | 
| 222 222 | 
             
                  end
         | 
| 223 223 |  | 
| 224 | 
            -
                  it "gets passed along to  | 
| 224 | 
            +
                  it "gets passed along to engineyard-serverside" do
         | 
| 225 225 | 
             
                    ey "deploy"
         | 
| 226 226 | 
             
                    @ssh_commands.last.should =~ /--config '\{\"bert\":\"ernie\"\}'/
         | 
| 227 227 | 
             
                  end
         | 
| @@ -298,14 +298,14 @@ describe "ey deploy" do | |
| 298 298 | 
             
                before(:all) do
         | 
| 299 299 | 
             
                  api_scenario "one app, one environment", "user@git.host:path/to/repo.git"
         | 
| 300 300 | 
             
                  ey "deploy"
         | 
| 301 | 
            -
                  @deploy_command = @ssh_commands.find {|c| c =~ / | 
| 301 | 
            +
                  @deploy_command = @ssh_commands.find {|c| c =~ /engineyard-serverside.*deploy/ }
         | 
| 302 302 | 
             
                end
         | 
| 303 303 |  | 
| 304 | 
            -
                it "passes along the repository URL to  | 
| 304 | 
            +
                it "passes along the repository URL to engineyard-serverside" do
         | 
| 305 305 | 
             
                  @deploy_command.should =~ /--repo user@git.host:path\/to\/repo.git/
         | 
| 306 306 | 
             
                end
         | 
| 307 307 |  | 
| 308 | 
            -
                it "passes along the web server stack to  | 
| 308 | 
            +
                it "passes along the web server stack to engineyard-serverside" do
         | 
| 309 309 | 
             
                  @deploy_command.should =~ /--stack nginx_mongrel/
         | 
| 310 310 | 
             
                end
         | 
| 311 311 | 
             
              end
         | 
    
        data/spec/ey/rollback_spec.rb
    CHANGED
    
    | @@ -14,14 +14,14 @@ describe "ey rollback" do | |
| 14 14 | 
             
              def verify_ran(scenario)
         | 
| 15 15 | 
             
                @out.should match(/Rolling back.*#{scenario[:application]}.*#{scenario[:environment]}/)
         | 
| 16 16 | 
             
                @err.should be_empty
         | 
| 17 | 
            -
                @ssh_commands.last.should match(/ | 
| 17 | 
            +
                @ssh_commands.last.should match(/engineyard-serverside.*deploy rollback.*--app #{scenario[:application]}/)
         | 
| 18 18 | 
             
              end
         | 
| 19 19 |  | 
| 20 20 | 
             
              it_should_behave_like "it takes an environment name"
         | 
| 21 21 | 
             
              it_should_behave_like "it takes an app name"
         | 
| 22 | 
            -
              it_should_behave_like "it invokes  | 
| 22 | 
            +
              it_should_behave_like "it invokes engineyard-serverside"
         | 
| 23 23 |  | 
| 24 | 
            -
              it "passes along the web server stack to  | 
| 24 | 
            +
              it "passes along the web server stack to engineyard-serverside" do
         | 
| 25 25 | 
             
                api_scenario "one app, one environment"
         | 
| 26 26 | 
             
                ey "rollback"
         | 
| 27 27 | 
             
                @ssh_commands.last.should =~ /--stack nginx_mongrel/
         | 
    
        data/spec/ey/web/disable_spec.rb
    CHANGED
    
    | @@ -12,10 +12,10 @@ describe "ey web disable" do | |
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def verify_ran(scenario)
         | 
| 15 | 
            -
                @ssh_commands.should have_command_like(/ | 
| 15 | 
            +
                @ssh_commands.should have_command_like(/engineyard-serverside.*deploy enable_maintenance_page.*--app #{scenario[:application]}/)
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              it_should_behave_like "it takes an environment name"
         | 
| 19 19 | 
             
              it_should_behave_like "it takes an app name"
         | 
| 20 | 
            -
              it_should_behave_like "it invokes  | 
| 20 | 
            +
              it_should_behave_like "it invokes engineyard-serverside"
         | 
| 21 21 | 
             
            end
         | 
    
        data/spec/ey/web/enable_spec.rb
    CHANGED
    
    | @@ -12,10 +12,10 @@ describe "ey web enable" do | |
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def verify_ran(scenario)
         | 
| 15 | 
            -
                @ssh_commands.should have_command_like(/ | 
| 15 | 
            +
                @ssh_commands.should have_command_like(/engineyard-serverside.*deploy disable_maintenance_page.*--app #{scenario[:application]}/)
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              it_should_behave_like "it takes an environment name"
         | 
| 19 19 | 
             
              it_should_behave_like "it takes an app name"
         | 
| 20 | 
            -
              it_should_behave_like "it invokes  | 
| 20 | 
            +
              it_should_behave_like "it invokes engineyard-serverside"
         | 
| 21 21 | 
             
            end
         | 
| @@ -110,7 +110,7 @@ shared_examples_for "it takes an app name" do | |
| 110 110 |  | 
| 111 111 | 
             
            end
         | 
| 112 112 |  | 
| 113 | 
            -
            shared_examples_for "it invokes  | 
| 113 | 
            +
            shared_examples_for "it invokes engineyard-serverside" do
         | 
| 114 114 | 
             
              include Spec::Helpers::SharedIntegrationTestUtils
         | 
| 115 115 |  | 
| 116 116 | 
             
              context "with arguments" do
         | 
| @@ -119,11 +119,11 @@ shared_examples_for "it invokes ey-deploy" do | |
| 119 119 | 
             
                  run_ey({:env => 'giblets', :verbose => true})
         | 
| 120 120 | 
             
                end
         | 
| 121 121 |  | 
| 122 | 
            -
                it "passes --verbose to  | 
| 123 | 
            -
                  @ssh_commands.should have_command_like(/ | 
| 122 | 
            +
                it "passes --verbose to engineyard-serverside" do
         | 
| 123 | 
            +
                  @ssh_commands.should have_command_like(/engineyard-serverside.*deploy.*--verbose/)
         | 
| 124 124 | 
             
                end
         | 
| 125 125 |  | 
| 126 | 
            -
                it "passes along instance information to  | 
| 126 | 
            +
                it "passes along instance information to engineyard-serverside" do
         | 
| 127 127 | 
             
                  instance_args = [
         | 
| 128 128 | 
             
                    Regexp.quote("app_master_hostname.compute-1.amazonaws.com,app_master"),
         | 
| 129 129 | 
             
                    Regexp.quote("app_hostname.compute-1.amazonaws.com,app"),
         | 
| @@ -151,7 +151,7 @@ shared_examples_for "it invokes ey-deploy" do | |
| 151 151 | 
             
              end
         | 
| 152 152 |  | 
| 153 153 |  | 
| 154 | 
            -
              context " | 
| 154 | 
            +
              context "engineyard-serverside installation" do
         | 
| 155 155 | 
             
                before(:all) do
         | 
| 156 156 | 
             
                  api_scenario "one app, one environment"
         | 
| 157 157 | 
             
                end
         | 
| @@ -165,7 +165,7 @@ shared_examples_for "it invokes ey-deploy" do | |
| 165 165 | 
             
                end
         | 
| 166 166 |  | 
| 167 167 | 
             
                def exiting_ssh(exit_code)
         | 
| 168 | 
            -
                  "#!/usr/bin/env ruby\n exit!(#{exit_code}) if ARGV.to_s =~ /gem list  | 
| 168 | 
            +
                  "#!/usr/bin/env ruby\n exit!(#{exit_code}) if ARGV.to_s =~ /gem list engineyard-serverside/"
         | 
| 169 169 | 
             
                end
         | 
| 170 170 |  | 
| 171 171 | 
             
                it "raises an error if SSH fails" do
         | 
| @@ -174,21 +174,21 @@ shared_examples_for "it invokes ey-deploy" do | |
| 174 174 | 
             
                  @err.should =~ /SSH connection to \S+ failed/
         | 
| 175 175 | 
             
                end
         | 
| 176 176 |  | 
| 177 | 
            -
                it "installs  | 
| 177 | 
            +
                it "installs engineyard-serverside if it's missing" do
         | 
| 178 178 | 
             
                  run_ey({:env => 'giblets'}, {:prepend_to_path => {'ssh' => exiting_ssh(1)}})
         | 
| 179 179 |  | 
| 180 180 | 
             
                  gem_install_command = @ssh_commands.find do |command|
         | 
| 181 | 
            -
                    command =~ /gem install  | 
| 181 | 
            +
                    command =~ /gem install engineyard-serverside/
         | 
| 182 182 | 
             
                  end
         | 
| 183 183 | 
             
                  gem_install_command.should_not be_nil
         | 
| 184 | 
            -
                  gem_install_command.should =~ %r{/usr/local/ey_resin/ruby/bin/gem install.* | 
| 184 | 
            +
                  gem_install_command.should =~ %r{/usr/local/ey_resin/ruby/bin/gem install.*engineyard-serverside}
         | 
| 185 185 | 
             
                end
         | 
| 186 186 |  | 
| 187 | 
            -
                it "does not try to install  | 
| 187 | 
            +
                it "does not try to install engineyard-serverside if it's already there" do
         | 
| 188 188 | 
             
                  run_ey({:env => 'giblets'}, {:prepend_to_path => {'ssh' => exiting_ssh(0)}})
         | 
| 189 | 
            -
                  @ssh_commands.should_not have_command_like(/gem install  | 
| 190 | 
            -
                  ver = Regexp.quote(EY::Model::Instance:: | 
| 191 | 
            -
                  @ssh_commands.should have_command_like(/ | 
| 189 | 
            +
                  @ssh_commands.should_not have_command_like(/gem install engineyard-serverside/)
         | 
| 190 | 
            +
                  ver = Regexp.quote(EY::Model::Instance::ENGINEYARD_SERVERSIDE_VERSION)
         | 
| 191 | 
            +
                  @ssh_commands.should have_command_like(/engineyard-serverside _#{ver}_ deploy/)
         | 
| 192 192 | 
             
                end
         | 
| 193 193 | 
             
              end  
         | 
| 194 194 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,12 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: engineyard
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash: 21
         | 
| 5 4 | 
             
              prerelease: false
         | 
| 6 5 | 
             
              segments: 
         | 
| 7 6 | 
             
              - 1
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 1. | 
| 7 | 
            +
              - 2
         | 
| 8 | 
            +
              - 0
         | 
| 9 | 
            +
              version: 1.2.0
         | 
| 11 10 | 
             
            platform: ruby
         | 
| 12 11 | 
             
            authors: 
         | 
| 13 12 | 
             
            - EY Cloud Team
         | 
| @@ -15,101 +14,89 @@ autorequire: | |
| 15 14 | 
             
            bindir: bin
         | 
| 16 15 | 
             
            cert_chain: []
         | 
| 17 16 |  | 
| 18 | 
            -
            date: 2010-08- | 
| 17 | 
            +
            date: 2010-08-16 00:00:00 -07:00
         | 
| 19 18 | 
             
            default_executable: ey
         | 
| 20 19 | 
             
            dependencies: 
         | 
| 21 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 22 21 | 
             
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         | 
| 23 | 
            -
                none: false
         | 
| 24 22 | 
             
                requirements: 
         | 
| 25 | 
            -
                - -  | 
| 23 | 
            +
                - - ">="
         | 
| 26 24 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 27 | 
            -
                    hash: 39
         | 
| 28 25 | 
             
                    segments: 
         | 
| 29 26 | 
             
                    - 0
         | 
| 30 | 
            -
                     | 
| 31 | 
            -
                    - 0
         | 
| 32 | 
            -
                    version: 0.14.0
         | 
| 27 | 
            +
                    version: "0"
         | 
| 33 28 | 
             
              requirement: *id001
         | 
| 34 | 
            -
              name: thor
         | 
| 35 29 | 
             
              prerelease: false
         | 
| 30 | 
            +
              name: termios
         | 
| 36 31 | 
             
              type: :runtime
         | 
| 37 32 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 38 33 | 
             
              version_requirements: &id002 !ruby/object:Gem::Requirement 
         | 
| 39 | 
            -
                none: false
         | 
| 40 34 | 
             
                requirements: 
         | 
| 41 35 | 
             
                - - ~>
         | 
| 42 36 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 43 | 
            -
                    hash: 7
         | 
| 44 37 | 
             
                    segments: 
         | 
| 45 38 | 
             
                    - 1
         | 
| 46 | 
            -
                    -  | 
| 47 | 
            -
                     | 
| 39 | 
            +
                    - 5
         | 
| 40 | 
            +
                    - 2
         | 
| 41 | 
            +
                    version: 1.5.2
         | 
| 48 42 | 
             
              requirement: *id002
         | 
| 49 | 
            -
              name: rest-client
         | 
| 50 43 | 
             
              prerelease: false
         | 
| 44 | 
            +
              name: highline
         | 
| 51 45 | 
             
              type: :runtime
         | 
| 52 46 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 53 47 | 
             
              version_requirements: &id003 !ruby/object:Gem::Requirement 
         | 
| 54 | 
            -
                none: false
         | 
| 55 48 | 
             
                requirements: 
         | 
| 56 49 | 
             
                - - ~>
         | 
| 57 50 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 58 | 
            -
                    hash: 7
         | 
| 59 51 | 
             
                    segments: 
         | 
| 60 | 
            -
                    -  | 
| 61 | 
            -
                    -  | 
| 62 | 
            -
                    -  | 
| 63 | 
            -
                    version:  | 
| 52 | 
            +
                    - 0
         | 
| 53 | 
            +
                    - 14
         | 
| 54 | 
            +
                    - 0
         | 
| 55 | 
            +
                    version: 0.14.0
         | 
| 64 56 | 
             
              requirement: *id003
         | 
| 65 | 
            -
              name: highline
         | 
| 66 57 | 
             
              prerelease: false
         | 
| 58 | 
            +
              name: thor
         | 
| 67 59 | 
             
              type: :runtime
         | 
| 68 60 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 69 61 | 
             
              version_requirements: &id004 !ruby/object:Gem::Requirement 
         | 
| 70 | 
            -
                none: false
         | 
| 71 62 | 
             
                requirements: 
         | 
| 72 | 
            -
                - -  | 
| 63 | 
            +
                - - ~>
         | 
| 73 64 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 74 | 
            -
                    hash: 3
         | 
| 75 65 | 
             
                    segments: 
         | 
| 76 66 | 
             
                    - 0
         | 
| 77 | 
            -
                     | 
| 67 | 
            +
                    - 0
         | 
| 68 | 
            +
                    - 4
         | 
| 69 | 
            +
                    version: 0.0.4
         | 
| 78 70 | 
             
              requirement: *id004
         | 
| 79 | 
            -
              name: termios
         | 
| 80 71 | 
             
              prerelease: false
         | 
| 72 | 
            +
              name: escape
         | 
| 81 73 | 
             
              type: :runtime
         | 
| 82 74 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 83 75 | 
             
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         | 
| 84 | 
            -
                none: false
         | 
| 85 76 | 
             
                requirements: 
         | 
| 86 77 | 
             
                - - ~>
         | 
| 87 78 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 88 | 
            -
                    hash: 7
         | 
| 89 79 | 
             
                    segments: 
         | 
| 90 80 | 
             
                    - 1
         | 
| 91 81 | 
             
                    - 4
         | 
| 92 82 | 
             
                    - 0
         | 
| 93 83 | 
             
                    version: 1.4.0
         | 
| 94 84 | 
             
              requirement: *id005
         | 
| 95 | 
            -
              name: json
         | 
| 96 85 | 
             
              prerelease: false
         | 
| 86 | 
            +
              name: json
         | 
| 97 87 | 
             
              type: :runtime
         | 
| 98 88 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 99 89 | 
             
              version_requirements: &id006 !ruby/object:Gem::Requirement 
         | 
| 100 | 
            -
                none: false
         | 
| 101 90 | 
             
                requirements: 
         | 
| 102 91 | 
             
                - - ~>
         | 
| 103 92 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 104 | 
            -
                    hash: 23
         | 
| 105 93 | 
             
                    segments: 
         | 
| 106 | 
            -
                    -  | 
| 107 | 
            -
                    - 0
         | 
| 94 | 
            +
                    - 1
         | 
| 108 95 | 
             
                    - 4
         | 
| 109 | 
            -
                    version:  | 
| 96 | 
            +
                    version: "1.4"
         | 
| 110 97 | 
             
              requirement: *id006
         | 
| 111 | 
            -
              name: escape
         | 
| 112 98 | 
             
              prerelease: false
         | 
| 99 | 
            +
              name: rest-client
         | 
| 113 100 | 
             
              type: :runtime
         | 
| 114 101 | 
             
            description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.
         | 
| 115 102 | 
             
            email: cloud@engineyard.com
         | 
| @@ -133,6 +120,7 @@ files: | |
| 133 120 | 
             
            - lib/engineyard/collection.rb
         | 
| 134 121 | 
             
            - lib/engineyard/config.rb
         | 
| 135 122 | 
             
            - lib/engineyard/error.rb
         | 
| 123 | 
            +
            - lib/engineyard/model/#app.rb#
         | 
| 136 124 | 
             
            - lib/engineyard/model/api_struct.rb
         | 
| 137 125 | 
             
            - lib/engineyard/model/app.rb
         | 
| 138 126 | 
             
            - lib/engineyard/model/environment.rb
         | 
| @@ -146,36 +134,6 @@ files: | |
| 146 134 | 
             
            - lib/engineyard.rb
         | 
| 147 135 | 
             
            - LICENSE
         | 
| 148 136 | 
             
            - README.rdoc
         | 
| 149 | 
            -
            - spec/engineyard/api_spec.rb
         | 
| 150 | 
            -
            - spec/engineyard/cli/api_spec.rb
         | 
| 151 | 
            -
            - spec/engineyard/cli_spec.rb
         | 
| 152 | 
            -
            - spec/engineyard/collection/apps_spec.rb
         | 
| 153 | 
            -
            - spec/engineyard/collection/environments_spec.rb
         | 
| 154 | 
            -
            - spec/engineyard/config_spec.rb
         | 
| 155 | 
            -
            - spec/engineyard/model/api_struct_spec.rb
         | 
| 156 | 
            -
            - spec/engineyard/model/environment_spec.rb
         | 
| 157 | 
            -
            - spec/engineyard/model/instance_spec.rb
         | 
| 158 | 
            -
            - spec/engineyard/repo_spec.rb
         | 
| 159 | 
            -
            - spec/engineyard_spec.rb
         | 
| 160 | 
            -
            - spec/ey/deploy_spec.rb
         | 
| 161 | 
            -
            - spec/ey/ey_spec.rb
         | 
| 162 | 
            -
            - spec/ey/list_environments_spec.rb
         | 
| 163 | 
            -
            - spec/ey/logs_spec.rb
         | 
| 164 | 
            -
            - spec/ey/rebuild_spec.rb
         | 
| 165 | 
            -
            - spec/ey/recipes/apply_spec.rb
         | 
| 166 | 
            -
            - spec/ey/recipes/download_spec.rb
         | 
| 167 | 
            -
            - spec/ey/recipes/upload_spec.rb
         | 
| 168 | 
            -
            - spec/ey/rollback_spec.rb
         | 
| 169 | 
            -
            - spec/ey/ssh_spec.rb
         | 
| 170 | 
            -
            - spec/ey/web/disable_spec.rb
         | 
| 171 | 
            -
            - spec/ey/web/enable_spec.rb
         | 
| 172 | 
            -
            - spec/spec_helper.rb
         | 
| 173 | 
            -
            - spec/support/bundled_ey
         | 
| 174 | 
            -
            - spec/support/fake_awsm.ru
         | 
| 175 | 
            -
            - spec/support/git_repo.rb
         | 
| 176 | 
            -
            - spec/support/helpers.rb
         | 
| 177 | 
            -
            - spec/support/ruby_ext.rb
         | 
| 178 | 
            -
            - spec/support/shared_behavior.rb
         | 
| 179 137 | 
             
            has_rdoc: true
         | 
| 180 138 | 
             
            homepage: http://engineyard.com
         | 
| 181 139 | 
             
            licenses: []
         | 
| @@ -186,27 +144,23 @@ rdoc_options: [] | |
| 186 144 | 
             
            require_paths: 
         | 
| 187 145 | 
             
            - lib
         | 
| 188 146 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 189 | 
            -
              none: false
         | 
| 190 147 | 
             
              requirements: 
         | 
| 191 148 | 
             
              - - ">="
         | 
| 192 149 | 
             
                - !ruby/object:Gem::Version 
         | 
| 193 | 
            -
                  hash: 3
         | 
| 194 150 | 
             
                  segments: 
         | 
| 195 151 | 
             
                  - 0
         | 
| 196 152 | 
             
                  version: "0"
         | 
| 197 153 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 198 | 
            -
              none: false
         | 
| 199 154 | 
             
              requirements: 
         | 
| 200 155 | 
             
              - - ">="
         | 
| 201 156 | 
             
                - !ruby/object:Gem::Version 
         | 
| 202 | 
            -
                  hash: 3
         | 
| 203 157 | 
             
                  segments: 
         | 
| 204 158 | 
             
                  - 0
         | 
| 205 159 | 
             
                  version: "0"
         | 
| 206 160 | 
             
            requirements: []
         | 
| 207 161 |  | 
| 208 162 | 
             
            rubyforge_project: 
         | 
| 209 | 
            -
            rubygems_version: 1.3. | 
| 163 | 
            +
            rubygems_version: 1.3.6
         | 
| 210 164 | 
             
            signing_key: 
         | 
| 211 165 | 
             
            specification_version: 3
         | 
| 212 166 | 
             
            summary: Command-line deployment for the Engine Yard cloud
         |