engineyard-serverside 2.3.7 → 2.3.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/engineyard-serverside/configuration.rb +2 -0
- data/lib/engineyard-serverside/dependency_manager/composer.rb +1 -1
- data/lib/engineyard-serverside/deploy.rb +2 -0
- data/lib/engineyard-serverside/deploy_hook.rb +7 -1
- data/lib/engineyard-serverside/server.rb +4 -2
- data/lib/engineyard-serverside/source/git.rb +26 -10
- data/lib/engineyard-serverside/version.rb +1 -1
- data/spec/configuration_spec.rb +11 -3
- data/spec/multi_dependency_manager_spec.rb +1 -1
- data/spec/php_deploy_spec.rb +11 -9
- data/spec/rollback_spec.rb +41 -47
- data/spec/support/integration.rb +1 -1
- metadata +154 -123
- checksums.yaml +0 -15
@@ -84,6 +84,8 @@ module EY
|
|
84
84
|
def_option :stack, nil
|
85
85
|
def_option(:source_class) { fetch_deprecated(:strategy, :source_class, nil) } # strategy is deprecated
|
86
86
|
def_option :branch, 'master'
|
87
|
+
def_option(:input_ref) { branch }
|
88
|
+
def_option :deployed_by, 'Automation (User name not available)'
|
87
89
|
def_option :current_roles, []
|
88
90
|
def_option :current_name, nil
|
89
91
|
def_option :copy_exclude, []
|
@@ -48,7 +48,7 @@ To fix this problem, commit your composer.lock to the repository and redeploy.
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def composer_selfupdate
|
51
|
-
run "composer self-update"
|
51
|
+
run "command -v composer | xargs -I composer find composer -user #{config.user} -exec {} self-update \\;"
|
52
52
|
end
|
53
53
|
|
54
54
|
def composer_available?
|
@@ -218,6 +218,8 @@ chmod 0700 #{path}
|
|
218
218
|
def rollback
|
219
219
|
if config.rollback_paths!
|
220
220
|
begin
|
221
|
+
load_ey_yml
|
222
|
+
require_custom_tasks
|
221
223
|
rolled_back_release = paths.latest_release
|
222
224
|
shell.status "Rolling back to previous release: #{short_log_message(config.active_revision)}"
|
223
225
|
abort_on_bad_paths_in_release_directory
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'engineyard-serverside/shell/helpers'
|
2
|
+
require 'rbconfig'
|
2
3
|
|
3
4
|
module EY
|
4
5
|
module Serverside
|
@@ -57,8 +58,13 @@ Please fix this error before retrying.
|
|
57
58
|
ERROR
|
58
59
|
end
|
59
60
|
|
61
|
+
# Ideally we'd use RbConfig.ruby, but that doesn't work on 1.8.7.
|
62
|
+
def ruby_bin
|
63
|
+
File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
64
|
+
end
|
65
|
+
|
60
66
|
def syntax_error(file)
|
61
|
-
output =
|
67
|
+
output = `#{ruby_bin} -c #{file} 2>&1`
|
62
68
|
output unless output =~ /Syntax OK/
|
63
69
|
end
|
64
70
|
|
@@ -67,8 +67,10 @@ module EY
|
|
67
67
|
yield local? ? command : remote_command(command)
|
68
68
|
end
|
69
69
|
|
70
|
+
# Explicitly putting that space in helps us make sure we don't
|
71
|
+
# accidentally leave off the space on the end of ssh_command.
|
70
72
|
def remote_command(command)
|
71
|
-
ssh_command + Escape.shell_command(["#{user}@#{hostname}", command])
|
73
|
+
ssh_command + " " + Escape.shell_command(["#{user}@#{hostname}", command])
|
72
74
|
end
|
73
75
|
|
74
76
|
# Make a known hosts tempfile to absorb host fingerprints so we don't show
|
@@ -82,7 +84,7 @@ module EY
|
|
82
84
|
end
|
83
85
|
|
84
86
|
def ssh_command
|
85
|
-
"ssh -i #{ENV['HOME']}/.ssh/internal -o StrictHostKeyChecking=no -o UserKnownHostsFile=#{self.class.known_hosts_file.path} -o PasswordAuthentication=no "
|
87
|
+
"ssh -i #{ENV['HOME']}/.ssh/internal -o StrictHostKeyChecking=no -o UserKnownHostsFile=#{self.class.known_hosts_file.path} -o PasswordAuthentication=no -o ServerAliveInterval=60"
|
86
88
|
end
|
87
89
|
|
88
90
|
end
|
@@ -45,34 +45,46 @@ class EY::Serverside::Source::Git < EY::Serverside::Source
|
|
45
45
|
# Returns .
|
46
46
|
def checkout
|
47
47
|
shell.status "Deploying revision #{short_log_message(to_checkout)}"
|
48
|
-
q = opts[:verbose] ? '' : '--quiet'
|
49
48
|
in_source_cache do
|
50
|
-
(run_and_success?("git checkout --force #{
|
51
|
-
run_and_success?("git reset --hard #{
|
49
|
+
(run_and_success?("git checkout --force #{quiet} '#{to_checkout}'") ||
|
50
|
+
run_and_success?("git reset --hard #{quiet} '#{to_checkout}'")) &&
|
52
51
|
run_and_success?("git submodule sync") &&
|
53
52
|
run_and_success?("git submodule update --init") &&
|
54
53
|
run_and_success?("git clean -dfq")
|
55
54
|
end
|
56
55
|
end
|
57
56
|
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
57
|
+
# Remove a local branch with the same name as a branch that is being
|
58
|
+
# checked out. If there is already a local branch with the same name,
|
59
|
+
# then git checkout will checkout the possibly out-of-date local branch
|
60
|
+
# instead of the most current remote.
|
61
61
|
def clean_local_branch
|
62
62
|
run_and_success?("#{git} show-branch #{ref} > /dev/null 2>&1 && #{git} branch -D #{ref} > /dev/null 2>&1")
|
63
63
|
end
|
64
64
|
|
65
|
-
#
|
65
|
+
# Prune and then fetch origin
|
66
|
+
#
|
67
|
+
# OR, if origin has changed locations
|
68
|
+
#
|
69
|
+
# Remove and reclone the repository from url
|
66
70
|
def fetch
|
67
71
|
run_and_success?(fetch_command)
|
68
72
|
end
|
69
73
|
|
74
|
+
# Pruning before fetching makes sure that branches removed from remote are
|
75
|
+
# removed locally. This hopefully prevents problems where a branch name
|
76
|
+
# collides with a branch directory name (among other problems).
|
77
|
+
#
|
78
|
+
# Note that --prune doesn't succeed at doing this, even though it seems like
|
79
|
+
# it should.
|
70
80
|
def fetch_command
|
71
81
|
if usable_repository?
|
72
|
-
|
73
|
-
"#{git} fetch --force --prune --update-head-ok #{
|
82
|
+
prune_c = "#{git} remote prune origin 2>&1"
|
83
|
+
fetch_c = "#{git} fetch --force --prune --update-head-ok #{quiet} origin '+refs/heads/*:refs/remotes/origin/*' '+refs/tags/*:refs/tags/*' 2>&1"
|
84
|
+
|
85
|
+
"#{prune_c} && #{fetch_c}"
|
74
86
|
else
|
75
|
-
"rm -rf #{repository_cache} && git clone
|
87
|
+
"rm -rf #{repository_cache} && git clone #{quiet} #{uri} #{repository_cache} 2>&1"
|
76
88
|
end
|
77
89
|
end
|
78
90
|
|
@@ -102,4 +114,8 @@ class EY::Serverside::Source::Git < EY::Serverside::Source
|
|
102
114
|
run_and_success?("#{git} show-branch origin/#{ref} > /dev/null 2>&1")
|
103
115
|
end
|
104
116
|
|
117
|
+
def quiet
|
118
|
+
@quiet ||= opts[:verbose] ? '' : '--quiet'
|
119
|
+
end
|
120
|
+
|
105
121
|
end
|
data/spec/configuration_spec.rb
CHANGED
@@ -32,6 +32,8 @@ describe EY::Serverside::Deploy::Configuration do
|
|
32
32
|
@config.ignore_gemfile_lock_warning.should == false
|
33
33
|
@config.bundle_without.should == %w[test development]
|
34
34
|
@config.extra_bundle_install_options.should == %w[--without test development]
|
35
|
+
@config.deployed_by.should == "Automation (User name not available)"
|
36
|
+
@config.input_ref.should == @config.branch
|
35
37
|
end
|
36
38
|
|
37
39
|
it "raises when required options are not given" do
|
@@ -44,9 +46,10 @@ describe EY::Serverside::Deploy::Configuration do
|
|
44
46
|
end
|
45
47
|
|
46
48
|
context "strategies" do
|
47
|
-
let(:options)
|
49
|
+
let(:options) do
|
48
50
|
{ "app" => "serverside" }
|
49
|
-
|
51
|
+
end
|
52
|
+
|
50
53
|
it "uses strategy if set" do
|
51
54
|
@config = EY::Serverside::Deploy::Configuration.new(
|
52
55
|
options.merge({'strategy' => 'IntegrationSpec', 'git' => 'git@github.com:engineyard/todo.git'})
|
@@ -90,7 +93,7 @@ describe EY::Serverside::Deploy::Configuration do
|
|
90
93
|
'environment_name' => 'env_name',
|
91
94
|
'account_name' => 'acc',
|
92
95
|
'branch' => 'branch_from_command_line',
|
93
|
-
'config' => MultiJson.dump({'custom' => 'custom_from_extra_config', 'maintenance_on_migrate' => 'false', 'precompile_assets' => 'false'})
|
96
|
+
'config' => MultiJson.dump({'custom' => 'custom_from_extra_config', 'maintenance_on_migrate' => 'false', 'precompile_assets' => 'false', 'deployed_by' => 'Martin Emde', 'input_ref' => 'input_branch'})
|
94
97
|
})
|
95
98
|
end
|
96
99
|
|
@@ -113,6 +116,11 @@ describe EY::Serverside::Deploy::Configuration do
|
|
113
116
|
it "doesn't bundle --without the framework_env" do
|
114
117
|
@config.bundle_without.should == %w[test]
|
115
118
|
end
|
119
|
+
|
120
|
+
it "gets deployed_by and input_ref correct" do
|
121
|
+
@config.deployed_by.should == "Martin Emde"
|
122
|
+
@config.input_ref.should == "input_branch"
|
123
|
+
end
|
116
124
|
end
|
117
125
|
|
118
126
|
describe "ey.yml loading" do
|
@@ -14,7 +14,7 @@ describe "Deploying an application that uses Node.js and NPM" do
|
|
14
14
|
npm_cmd = @deployer.commands.grep(/npm install/).first
|
15
15
|
npm_cmd.should_not be_nil
|
16
16
|
|
17
|
-
update_cmd = @deployer.commands.grep(/composer
|
17
|
+
update_cmd = @deployer.commands.grep(/composer.*self-update/).first
|
18
18
|
update_cmd.should_not be_nil
|
19
19
|
|
20
20
|
composer_cmd = @deployer.commands.grep(/composer install/).first
|
data/spec/php_deploy_spec.rb
CHANGED
@@ -16,10 +16,10 @@ describe "Deploying an application that uses PHP and Composer" do
|
|
16
16
|
install_cmd.should_not be_nil
|
17
17
|
end
|
18
18
|
|
19
|
-
it "
|
19
|
+
it "attempts to run 'composer self-update' before 'composer install'" do
|
20
20
|
update_cmd = nil
|
21
21
|
@deployer.commands.each do |cmd|
|
22
|
-
update_cmd ||= /composer
|
22
|
+
update_cmd ||= /composer.*self-update/.match(cmd)
|
23
23
|
if /composer install/.match(cmd)
|
24
24
|
update_cmd.should_not be nil
|
25
25
|
end
|
@@ -52,10 +52,10 @@ describe "Deploying an application that uses PHP and Composer" do
|
|
52
52
|
install_cmd.should_not be_nil
|
53
53
|
end
|
54
54
|
|
55
|
-
it "
|
55
|
+
it "attempts to run 'composer self-update' before 'composer install'" do
|
56
56
|
update_cmd = nil
|
57
57
|
@deployer.commands.each do |cmd|
|
58
|
-
update_cmd ||= /composer
|
58
|
+
update_cmd ||= /composer.*self-update/.match(cmd)
|
59
59
|
if /composer install/.match(cmd)
|
60
60
|
update_cmd.should_not be nil
|
61
61
|
end
|
@@ -66,13 +66,15 @@ describe "Deploying an application that uses PHP and Composer" do
|
|
66
66
|
|
67
67
|
end
|
68
68
|
|
69
|
-
|
69
|
+
unless $COMPOSER_INSTALLED
|
70
|
+
context "without composer available" do
|
70
71
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
it "fails to deploy" do
|
73
|
+
expect {deploy_test_application('php_composer_lock')}.to raise_error EY::Serverside::RemoteFailure
|
74
|
+
expect {deploy_test_application('php_no_composer_lock')}.to raise_error EY::Serverside::RemoteFailure
|
75
|
+
end
|
75
76
|
|
77
|
+
end
|
76
78
|
end
|
77
79
|
end
|
78
80
|
end
|
data/spec/rollback_spec.rb
CHANGED
@@ -1,55 +1,56 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Rolling back" do
|
4
|
+
def setup_good_and_bad_deploy(repo)
|
5
|
+
deploy_test_application(repo, 'migrate' => nil)
|
6
|
+
@good_revision = deploy_dir.join('current', 'REVISION').read.strip
|
7
|
+
deploy_dir.join('current', 'REVISION').should exist
|
8
|
+
deploy_dir.join('current', 'restart').delete
|
9
|
+
deploy_test_application(repo, 'migrate' => nil)
|
10
|
+
deploy_dir.join('current', 'REVISION').should exist
|
11
|
+
deploy_dir.join('current', 'restart').delete
|
12
|
+
|
13
|
+
releases = @deployer.config.paths.all_releases
|
14
|
+
releases.size.should == 2
|
15
|
+
@good_release = releases.first
|
16
|
+
@bad_release = releases.last
|
17
|
+
end
|
18
|
+
|
19
|
+
def rollback
|
20
|
+
argv = @adapter.rollback.commands.last.to_argv[2..-1]
|
21
|
+
with_mocked_commands do
|
22
|
+
capture do
|
23
|
+
EY::Serverside::CLI.start(argv)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
4
28
|
context "without bundler" do
|
5
29
|
before(:all) do
|
6
|
-
|
7
|
-
|
8
|
-
deploy_dir.join('current', 'REVISION').should exist
|
9
|
-
deploy_dir.join('current', 'restart').delete
|
10
|
-
deploy_test_application('not_bundled', 'migrate' => nil)
|
11
|
-
deploy_dir.join('current', 'REVISION').should exist
|
12
|
-
deploy_dir.join('current', 'restart').delete
|
30
|
+
setup_good_and_bad_deploy('not_bundled')
|
31
|
+
rollback
|
13
32
|
end
|
14
33
|
|
15
34
|
it "rolls back to the older deploy" do
|
16
|
-
releases = @deployer.config.paths.all_releases
|
17
|
-
releases.size.should == 2
|
18
|
-
good_release = releases.first
|
19
|
-
bad_release = releases.last
|
20
|
-
|
21
|
-
@deployer.rollback
|
22
35
|
out = read_output
|
23
36
|
out.should =~ /Rolling back to previous release.*#{@good_revision}/
|
24
37
|
out.should =~ /Restarting with previous release./
|
25
38
|
out.should =~ /Finished rollback/
|
26
39
|
|
27
40
|
deploy_dir.join('current', 'restart').should exist
|
28
|
-
bad_release.should_not exist
|
29
|
-
good_release.join('restart').should exist
|
41
|
+
@bad_release.should_not exist
|
42
|
+
@good_release.join('restart').should exist
|
30
43
|
end
|
31
44
|
end
|
32
45
|
|
33
46
|
context "with a problematic file in the releases dir" do
|
34
47
|
before(:all) do
|
35
|
-
|
36
|
-
@
|
37
|
-
|
38
|
-
deploy_dir.join('current', 'restart').delete
|
39
|
-
deploy_test_application('not_bundled', 'migrate' => nil)
|
40
|
-
deploy_dir.join('current', 'REVISION').should exist
|
41
|
-
deploy_dir.join('current', 'restart').delete
|
48
|
+
setup_good_and_bad_deploy('not_bundled')
|
49
|
+
@deployer.config.paths.releases.join('tmp').mkpath
|
50
|
+
expect { rollback }.to raise_error
|
42
51
|
end
|
43
52
|
|
44
53
|
it "rolls back to the older deploy" do
|
45
|
-
releases = @deployer.config.paths.all_releases
|
46
|
-
releases.size.should == 2
|
47
|
-
good_release = releases.first
|
48
|
-
bad_release = releases.last
|
49
|
-
|
50
|
-
@deployer.config.paths.releases.join('tmp').mkpath
|
51
|
-
|
52
|
-
expect { @deployer.rollback }.to raise_error
|
53
54
|
out = read_output
|
54
55
|
expect(out).to include("Bad paths found in #{@deployer.config.paths.releases}:")
|
55
56
|
expect(out).to include(@deployer.config.paths.releases.join('tmp').to_s)
|
@@ -57,37 +58,30 @@ describe "Rolling back" do
|
|
57
58
|
expect(out).to_not include("Restarting with previous release.")
|
58
59
|
|
59
60
|
deploy_dir.join('current', 'restart').should_not exist
|
60
|
-
bad_release.should exist
|
61
|
-
good_release.should exist
|
61
|
+
@bad_release.should exist
|
62
|
+
@good_release.should exist
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
65
66
|
context "with complex config" do
|
66
67
|
before(:all) do
|
67
|
-
|
68
|
-
|
69
|
-
deploy_dir.join('current', 'REVISION').should exist
|
70
|
-
deploy_dir.join('current', 'restart').delete
|
71
|
-
deploy_test_application('ey_yml', 'migrate' => nil)
|
72
|
-
deploy_dir.join('current', 'REVISION').should exist
|
73
|
-
deploy_dir.join('current', 'restart').delete
|
68
|
+
setup_good_and_bad_deploy('ey_yml')
|
69
|
+
rollback
|
74
70
|
end
|
75
71
|
|
76
72
|
it "rolls back to the older deploy" do
|
77
|
-
releases = @deployer.config.paths.all_releases
|
78
|
-
releases.size.should == 2
|
79
|
-
good_release = releases.first
|
80
|
-
bad_release = releases.last
|
81
|
-
|
82
|
-
@deployer.rollback
|
83
73
|
out = read_output
|
84
74
|
out.should =~ /Rolling back to previous release.*#{@good_revision}/
|
85
75
|
out.should =~ /Restarting with previous release./
|
86
76
|
out.should =~ /Finished rollback/
|
87
77
|
|
88
78
|
deploy_dir.join('current', 'restart').should exist
|
89
|
-
bad_release.should_not exist
|
90
|
-
good_release.join('restart').should exist
|
79
|
+
@bad_release.should_not exist
|
80
|
+
@good_release.join('restart').should exist
|
81
|
+
end
|
82
|
+
|
83
|
+
it "loads and uses ey.yml during rollback" do
|
84
|
+
read_output.should =~ /--without only test/
|
91
85
|
end
|
92
86
|
end
|
93
87
|
end
|
data/spec/support/integration.rb
CHANGED
metadata
CHANGED
@@ -1,148 +1,168 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-serverside
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 17
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 3
|
9
|
+
- 9
|
10
|
+
version: 2.3.9
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- EY Cloud Team
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
|
18
|
+
date: 2014-03-26 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
14
21
|
name: rspec
|
15
|
-
|
16
|
-
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
17
25
|
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 63
|
28
|
+
segments:
|
29
|
+
- 2
|
30
|
+
- 12
|
31
|
+
- 0
|
19
32
|
version: 2.12.0
|
20
|
-
type: :development
|
21
33
|
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 2.12.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ! '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
34
|
type: :development
|
35
|
+
requirement: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 79
|
44
|
+
segments:
|
45
|
+
- 10
|
46
|
+
- 0
|
47
|
+
- 0
|
48
|
+
version: 10.0.0
|
35
49
|
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ! '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rdoc
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ! '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
50
|
type: :development
|
51
|
+
requirement: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: rdoc
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
49
63
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
64
|
+
type: :development
|
65
|
+
requirement: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
56
67
|
name: timecop
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
68
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - "="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 5
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
- 6
|
77
|
+
- 1
|
61
78
|
version: 0.6.1
|
62
|
-
type: :development
|
63
79
|
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.6.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: simplecov
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ! '>='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
80
|
type: :development
|
81
|
+
requirement: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: simplecov
|
84
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 3
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
version: "0"
|
77
93
|
prerelease: false
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
94
|
+
type: :development
|
95
|
+
requirement: *id005
|
96
|
+
- !ruby/object:Gem::Dependency
|
84
97
|
name: engineyard-cloud-client
|
85
|
-
|
86
|
-
|
98
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
87
101
|
- - ~>
|
88
|
-
- !ruby/object:Gem::Version
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 11
|
104
|
+
segments:
|
105
|
+
- 1
|
106
|
+
- 0
|
107
|
+
- 14
|
89
108
|
version: 1.0.14
|
90
|
-
type: :development
|
91
109
|
prerelease: false
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 1.0.14
|
97
|
-
- !ruby/object:Gem::Dependency
|
110
|
+
type: :development
|
111
|
+
requirement: *id006
|
112
|
+
- !ruby/object:Gem::Dependency
|
98
113
|
name: engineyard-serverside-adapter
|
99
|
-
|
100
|
-
|
114
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
101
117
|
- - ~>
|
102
|
-
- !ruby/object:Gem::Version
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 7
|
120
|
+
segments:
|
121
|
+
- 2
|
122
|
+
- 2
|
123
|
+
- 0
|
103
124
|
version: 2.2.0
|
104
|
-
type: :development
|
105
125
|
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ~>
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 2.2.0
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: sqlite3
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
126
|
type: :development
|
127
|
+
requirement: *id007
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: sqlite3
|
130
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
hash: 3
|
136
|
+
segments:
|
137
|
+
- 0
|
138
|
+
version: "0"
|
119
139
|
prerelease: false
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
140
|
+
type: :development
|
141
|
+
requirement: *id008
|
142
|
+
- !ruby/object:Gem::Dependency
|
126
143
|
name: mime-types
|
127
|
-
|
128
|
-
|
144
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
129
147
|
- - ~>
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
132
|
-
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
hash: 61
|
150
|
+
segments:
|
151
|
+
- 1
|
152
|
+
- 25
|
153
|
+
version: "1.25"
|
133
154
|
prerelease: false
|
134
|
-
|
135
|
-
|
136
|
-
- - ~>
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '1.25'
|
155
|
+
type: :development
|
156
|
+
requirement: *id009
|
139
157
|
description:
|
140
158
|
email: cloud@engineyard.com
|
141
|
-
executables:
|
159
|
+
executables:
|
142
160
|
- engineyard-serverside
|
143
161
|
extensions: []
|
162
|
+
|
144
163
|
extra_rdoc_files: []
|
145
|
-
|
164
|
+
|
165
|
+
files:
|
146
166
|
- bin/engineyard-serverside
|
147
167
|
- lib/engineyard-serverside/about.rb
|
148
168
|
- lib/engineyard-serverside/cli.rb
|
@@ -409,30 +429,41 @@ files:
|
|
409
429
|
- spec/support/integration.rb
|
410
430
|
- spec/support/source_doubles.rb
|
411
431
|
homepage: http://github.com/engineyard/engineyard-serverside
|
412
|
-
licenses:
|
432
|
+
licenses:
|
413
433
|
- MIT
|
414
|
-
metadata: {}
|
415
434
|
post_install_message:
|
416
435
|
rdoc_options: []
|
417
|
-
|
436
|
+
|
437
|
+
require_paths:
|
418
438
|
- lib
|
419
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
439
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
440
|
+
none: false
|
441
|
+
requirements:
|
442
|
+
- - ">="
|
443
|
+
- !ruby/object:Gem::Version
|
444
|
+
hash: 3
|
445
|
+
segments:
|
446
|
+
- 0
|
447
|
+
version: "0"
|
448
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
449
|
+
none: false
|
450
|
+
requirements:
|
451
|
+
- - ">="
|
452
|
+
- !ruby/object:Gem::Version
|
453
|
+
hash: 23
|
454
|
+
segments:
|
455
|
+
- 1
|
456
|
+
- 3
|
457
|
+
- 6
|
428
458
|
version: 1.3.6
|
429
459
|
requirements: []
|
460
|
+
|
430
461
|
rubyforge_project:
|
431
|
-
rubygems_version:
|
462
|
+
rubygems_version: 1.8.25
|
432
463
|
signing_key:
|
433
|
-
specification_version:
|
464
|
+
specification_version: 3
|
434
465
|
summary: A gem that deploys ruby applications on EY Cloud instances
|
435
|
-
test_files:
|
466
|
+
test_files:
|
436
467
|
- spec/archive_deploy_spec.rb
|
437
468
|
- spec/basic_deploy_spec.rb
|
438
469
|
- spec/bundler_deploy_spec.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
YjZmMjM2NmI3Y2U2MjM2MjdhOGI4MGE3OWQ5YTk1NmZiYzQwNjA3Zg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZTJjZjRkZGY1NmYzZjdlNGRhNzVkZDRkZDk0MGQ3YWI4YzllZGY3ZQ==
|
7
|
-
SHA512:
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZjlmZWRiNjVhN2Q3NDNmNDNlZGY1OWNhNjY4MTI1MDdhN2QzZTA5NjJjMjUw
|
10
|
-
MDFjYjk0MzZlZWVkM2Q2ZjBmNzQ4NzVmMDMxY2ZhYzAzN2JmNTYwYTBjOTM5
|
11
|
-
ODNmMzA3YmQxODU0ZjJlNTc2MTA4N2FjZThhNjUxMGY0YTczZjM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MTViNGYwNTRlZjI2NjQ4ZDIwOTg1ZWVjMTkwYzg4MDA1MDM2MGQzN2MyOGNi
|
14
|
-
MzIxNTQ3NDllMTQ4MDFjZjQxMWU4ZTBmZDU1M2VjMWIyNDJmMTg1NjMzMWQ4
|
15
|
-
ZDRmYjk5ZjQwMDQ0MTIyOGYwNjgzMTdlMjFlNGFmMGViZGM0ZTI=
|