engineyard-serverside 2.0.7 → 2.1.0.pre

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.
Files changed (98) hide show
  1. data/lib/engineyard-serverside.rb +0 -1
  2. data/lib/engineyard-serverside/cli.rb +44 -42
  3. data/lib/engineyard-serverside/configuration.rb +55 -4
  4. data/lib/engineyard-serverside/dependency_manager.rb +17 -0
  5. data/lib/engineyard-serverside/dependency_manager/base.rb +65 -0
  6. data/lib/engineyard-serverside/dependency_manager/bundler.rb +124 -0
  7. data/lib/engineyard-serverside/dependency_manager/bundler_lock.rb +155 -0
  8. data/lib/engineyard-serverside/dependency_manager/legacy_helpers.rb +24 -0
  9. data/lib/engineyard-serverside/dependency_manager/npm.rb +16 -0
  10. data/lib/engineyard-serverside/deploy.rb +86 -178
  11. data/lib/engineyard-serverside/deprecation.rb +11 -1
  12. data/lib/engineyard-serverside/paths.rb +6 -0
  13. data/lib/engineyard-serverside/propagator.rb +2 -2
  14. data/lib/engineyard-serverside/rails_assets.rb +152 -0
  15. data/lib/engineyard-serverside/rails_assets/strategy.rb +197 -0
  16. data/lib/engineyard-serverside/server.rb +5 -0
  17. data/lib/engineyard-serverside/servers.rb +19 -7
  18. data/lib/engineyard-serverside/shell.rb +7 -5
  19. data/lib/engineyard-serverside/shell/command_result.rb +1 -1
  20. data/lib/engineyard-serverside/strategies/git.rb +14 -4
  21. data/lib/engineyard-serverside/task.rb +1 -0
  22. data/lib/engineyard-serverside/version.rb +1 -1
  23. data/spec/bundler_deploy_spec.rb +36 -33
  24. data/spec/configuration_spec.rb +5 -4
  25. data/spec/custom_deploy_spec.rb +11 -9
  26. data/spec/deploy_hook_spec.rb +10 -3
  27. data/spec/ey_yml_customized_deploy_spec.rb +1 -1
  28. data/spec/fixtures/lockfiles/1.0-no-bundler +1 -1
  29. data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +1 -1
  30. data/spec/fixtures/lockfiles/1.0.18-do_mysql +1 -1
  31. data/spec/fixtures/lockfiles/1.0.18-do_postgres +1 -1
  32. data/spec/fixtures/lockfiles/1.0.18-mysql +1 -1
  33. data/spec/fixtures/lockfiles/1.0.18-mysql2 +1 -1
  34. data/spec/fixtures/lockfiles/1.0.18-pg +1 -1
  35. data/spec/fixtures/lockfiles/1.0.6-no-bundler +2 -2
  36. data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +2 -2
  37. data/spec/fixtures/lockfiles/1.0.6-with-bundler +2 -2
  38. data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +112 -0
  39. data/spec/fixtures/repos/{assets_enabled → assets_detected}/Gemfile +1 -2
  40. data/spec/fixtures/repos/{assets_enabled → assets_detected}/Gemfile.lock +1 -3
  41. data/spec/fixtures/repos/{assets_enabled → assets_detected}/README +0 -0
  42. data/spec/fixtures/repos/assets_detected/Rakefile +5 -0
  43. data/spec/fixtures/repos/{assets_enabled → assets_detected}/app/assets/empty +0 -0
  44. data/spec/fixtures/repos/{assets_enabled → assets_detected}/config/application.rb +0 -0
  45. data/spec/fixtures/repos/assets_detected/config/ey.yml +3 -0
  46. data/spec/fixtures/repos/assets_disabled/Gemfile +1 -2
  47. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +1 -3
  48. data/spec/fixtures/repos/assets_disabled/Rakefile +1 -0
  49. data/spec/fixtures/repos/assets_disabled/config/ey.yml +3 -0
  50. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +1 -2
  51. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +1 -3
  52. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +1 -0
  53. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +1 -0
  54. data/spec/fixtures/repos/assets_enabled_all/Gemfile +1 -2
  55. data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +1 -3
  56. data/spec/fixtures/repos/assets_enabled_all/Rakefile +1 -0
  57. data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +1 -0
  58. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +1 -1
  59. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +1 -1
  60. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +1 -0
  61. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +1 -2
  62. data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +1 -3
  63. data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +1 -0
  64. data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +1 -0
  65. data/spec/fixtures/repos/assets_in_hook/Gemfile +1 -2
  66. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +1 -3
  67. data/spec/fixtures/repos/assets_in_hook/config/ey.yml +3 -0
  68. data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +1 -1
  69. data/spec/fixtures/repos/bundle_fails/Gemfile +1 -0
  70. data/spec/fixtures/repos/bundle_fails/README +1 -0
  71. data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +1 -0
  72. data/spec/fixtures/repos/default/Gemfile +1 -2
  73. data/spec/fixtures/repos/default/Gemfile.lock +1 -3
  74. data/spec/fixtures/repos/default/ey.yml +3 -0
  75. data/spec/fixtures/repos/ey_yml/Gemfile +1 -1
  76. data/spec/fixtures/repos/ey_yml/Gemfile.lock +1 -1
  77. data/spec/fixtures/repos/ey_yml/config/ey.yml +11 -7
  78. data/spec/fixtures/repos/ey_yml_alt/Gemfile +1 -1
  79. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +1 -1
  80. data/spec/fixtures/repos/no_ey_config/Gemfile +1 -2
  81. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +1 -3
  82. data/spec/fixtures/repos/no_ey_config/ey.yml +3 -0
  83. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +1 -2
  84. data/spec/fixtures/repos/no_gemfile_lock/ey.yml +3 -0
  85. data/spec/fixtures/repos/sqlite3/Gemfile +1 -1
  86. data/spec/fixtures/repos/sqlite3/Gemfile.lock +1 -1
  87. data/spec/lockfile_parser_spec.rb +25 -11
  88. data/spec/rails31_deploy_spec.rb +46 -5
  89. data/spec/restart_spec.rb +3 -3
  90. data/spec/services_deploy_spec.rb +89 -86
  91. data/spec/shell_spec.rb +0 -8
  92. data/spec/spec_helper.rb +81 -36
  93. data/spec/sqlite3_deploy_spec.rb +4 -5
  94. data/spec/support/integration.rb +22 -37
  95. metadata +167 -154
  96. data/lib/engineyard-serverside/lockfile_parser.rb +0 -101
  97. data/lib/engineyard-serverside/rails_asset_support.rb +0 -132
  98. data/spec/fixtures/repos/assets_enabled/Rakefile +0 -5
data/spec/shell_spec.rb CHANGED
@@ -3,14 +3,6 @@ require 'tempfile'
3
3
  require 'timecop'
4
4
 
5
5
  describe EY::Serverside::Shell do
6
- if "".respond_to?(:force_encoding)
7
- it "status works for ut8" do
8
- output = StringIO.new
9
- shell = EY::Serverside::Shell.new(:verbose => true, :stdout => @output, :stderr => @output, :log_path => tmpdir.join("engineyard-serverside-#{Time.now.to_i}-#{$$}.log"), :start_time => Time.local(2008, 9, 1, 12, 10, 25))
10
- shell.status("\u2603".force_encoding("binary"))
11
- end
12
- end
13
-
14
6
  it "has a timestamp before each line" do
15
7
  time1 = Time.local(2008, 9, 1, 12, 0, 0)
16
8
  time2 = Time.local(2008, 9, 1, 12, 3, 5)
data/spec/spec_helper.rb CHANGED
@@ -14,6 +14,7 @@ end
14
14
 
15
15
  require 'pp'
16
16
  require 'engineyard-serverside'
17
+ require 'engineyard-serverside-adapter'
17
18
  require File.expand_path('../support/integration', __FILE__)
18
19
 
19
20
  FIXTURES_DIR = Pathname.new(__FILE__).dirname.join("fixtures")
@@ -27,15 +28,6 @@ module EY
27
28
  @node = nil
28
29
  end
29
30
 
30
- class Future
31
- def inspect
32
- <<-EOM
33
- #{self.class.name} result below: (run with DEBUG=1 to see the full log)
34
- #{result.inspect}
35
- EOM
36
- end
37
- end
38
-
39
31
  class Strategies::Git
40
32
  def short_log_message(_) "" end
41
33
  end
@@ -60,7 +52,7 @@ Spec::Runner.configure do |config|
60
52
  class VerboseStringIO < StringIO
61
53
  def <<(str)
62
54
  if ENV['VERBOSE'] || ENV['DEBUG']
63
- $stderr << str
55
+ STDERR << str
64
56
  end
65
57
  super
66
58
  end
@@ -100,10 +92,20 @@ Spec::Runner.configure do |config|
100
92
  read_stdout + "\n" + read_stderr
101
93
  end
102
94
 
103
- def test_shell
95
+ def capture
96
+ begin
97
+ $stdout = @stdout = VerboseStringIO.new
98
+ $stderr = @stderr = VerboseStringIO.new
99
+ yield
100
+ ensure
101
+ $stdout, $stderr = STDOUT, STDERR
102
+ end
103
+ end
104
+
105
+ def test_shell(verbose=true)
104
106
  @test_shell ||= begin
105
107
  @log_path = tmpdir.join("serverside-deploy-#{Time.now.to_i}-#{$$}.log")
106
- EY::Serverside::Shell.new(:verbose => true, :log_path => @log_path, :stdout => stdout, :stderr => stderr)
108
+ EY::Serverside::Shell.new(:verbose => verbose, :log_path => @log_path, :stdout => stdout, :stderr => stderr)
107
109
  end
108
110
  end
109
111
 
@@ -117,28 +119,26 @@ Spec::Runner.configure do |config|
117
119
 
118
120
  # set up EY::Serverside::Server like we're on a solo
119
121
  def test_servers
120
- EY::Serverside::Servers.from_hashes([{:hostname => 'localhost', :roles => %w[solo], :user => ENV['USER']}])
122
+ @test_servers ||= EY::Serverside::Servers.from_hashes([{:hostname => 'localhost', :roles => %w[solo], :user => ENV['USER']}])
121
123
  end
122
124
 
123
125
  # When a repo fixture name is specified, the files found in the specified
124
126
  # spec/fixtures/repos dir are copied into the test github repository.
125
127
  def deploy_test_application(repo_fixture_name = 'default', extra_config = {}, &block)
126
- servers = test_servers
127
-
128
- # run a deploy
129
- @config = EY::Serverside::Deploy::Configuration.new({
130
- "strategy" => "IntegrationSpec",
131
- "deploy_to" => deploy_dir.to_s,
132
- "group" => GROUP,
133
- "stack" => 'nginx_passenger',
134
- "migrate" => "ruby -e 'puts ENV[\"PATH\"]' > #{deploy_dir}/path-when-migrating",
135
- 'app' => 'rails31',
136
- 'environment_name' => 'env',
137
- 'account_name' => 'acc',
138
- 'framework_env' => 'staging',
139
- 'branch' => 'somebranch',
140
- 'repo' => FIXTURES_DIR.join('repos', repo_fixture_name)
141
- }.merge(extra_config))
128
+ options = {
129
+ "strategy" => "IntegrationSpec",
130
+ "deploy_to" => deploy_dir.to_s,
131
+ "group" => GROUP,
132
+ "stack" => 'nginx_passenger',
133
+ "migrate" => "ruby -e 'puts ENV[\"PATH\"]' > #{deploy_dir}/path-when-migrating",
134
+ "app" => 'rails31',
135
+ "environment_name" => 'env',
136
+ "account_name" => 'acc',
137
+ "framework_env" => 'staging',
138
+ "branch" => 'somebranch',
139
+ "verbose" => true,
140
+ "repo" => FIXTURES_DIR.join('repos', repo_fixture_name),
141
+ }.merge(extra_config)
142
142
 
143
143
  # pretend there is a shared bundled_gems directory
144
144
  deploy_dir.join('shared', 'bundled_gems').mkpath
@@ -146,15 +146,60 @@ Spec::Runner.configure do |config|
146
146
  deploy_dir.join('shared', 'bundled_gems', name).open("w") { |f| f.write("old\n") }
147
147
  end
148
148
 
149
+ # Create the command to send to CLI.start, even though most of the options are ignored
150
+ @adapter = EY::Serverside::Adapter.new do |args|
151
+ args.app = options['app']
152
+ args.environment_name = options['environment_name']
153
+ args.account_name = options['account_name']
154
+ args.migrate = options['migrate']
155
+ args.ref = options['branch']
156
+ args.repo = options['repo']
157
+ args.config = {
158
+ "services_check_command" => "which echo",
159
+ "services_setup_command" => "echo 'services setup command'",
160
+ "strategy" => options["strategy"],
161
+ "deploy_to" => options["deploy_to"],
162
+ "group" => options["group"]
163
+ }.merge(options['config'] || {})
164
+ args.framework_env = options['framework_env']
165
+ args.stack = options['stack']
166
+ args.verbose = options['verbose']
167
+ args.instances = test_servers.map {|s| {:hostname => s.hostname, :roles => s.roles.to_a, :name => s.name} }
168
+ end
169
+
170
+ @argv = @adapter.deploy.commands.last.to_argv[2..-1]
171
+
149
172
  @binpath = File.expand_path(File.join(File.dirname(__FILE__), '..', 'bin', 'engineyard-serverside'))
150
- @deployer = FullTestDeploy.new(servers, @config, test_shell)
151
- yield @deployer if block_given?
152
- @deployer.deploy
173
+ FullTestDeploy.on_create_callback = block
174
+ capture do
175
+ EY::Serverside::CLI.start(@argv)
176
+ end
177
+ ensure
178
+ @deployer = EY::Serverside::Deploy.deployer
179
+ @config = EY::Serverside::Deploy.config
153
180
  end
154
181
 
155
- def redeploy_test_application(&block)
156
- raise "Please deploy_test_application first" unless @deployer
157
- yield @deployer if block_given?
158
- @deployer.deploy
182
+ def redeploy_test_application(extra_config = {}, &block)
183
+ raise "Please deploy_test_application first" unless @argv
184
+
185
+ @action = @adapter.deploy do |args|
186
+ extra_config.each do |key,val|
187
+ case key
188
+ when 'branch' then args.ref = val
189
+ when 'config' then args.config = args.config.merge(val || {})
190
+ else args.send("#{key}=", val)
191
+ end
192
+ end
193
+ end
194
+
195
+ @argv = @action.commands.last.to_argv[2..-1]
196
+
197
+ FullTestDeploy.on_create_callback = block
198
+ capture do
199
+ EY::Serverside::CLI.start(@argv)
200
+ end
201
+ ensure
202
+ @deployer = EY::Serverside::Deploy.deployer
203
+ @config = EY::Serverside::Deploy.config
159
204
  end
160
205
  end
@@ -6,11 +6,10 @@ describe "Deploying an application with sqlite3 as the only DB adapter in the Ge
6
6
  @shared_path = nil
7
7
  @framework_env = nil
8
8
 
9
- deploy_test_application('sqlite3') do |deployer|
10
- @shared_path = deployer.config.paths.shared
11
- @release_path = deployer.config.paths.active_release
12
- @framework_env = deployer.framework_env
13
- end
9
+ deploy_test_application('sqlite3')
10
+ @shared_path = @deployer.config.paths.shared
11
+ @release_path = @deployer.config.paths.active_release
12
+ @framework_env = @deployer.framework_env
14
13
  end
15
14
 
16
15
  it 'should symlink database.sqlite3.yml' do
@@ -1,11 +1,18 @@
1
1
  class FullTestDeploy < EY::Serverside::Deploy
2
2
  attr_reader :commands
3
3
 
4
+ class << self
5
+ attr_accessor :on_create_callback
6
+ end
7
+
8
+ def self.realnew(servers, config, shell)
9
+ on_create_callback.call(config) if on_create_callback # holy hax batman, this is insanity
10
+ super
11
+ end
12
+
4
13
  def initialize(*)
5
14
  super
6
15
  @commands = []
7
- @gemfile_contents = nil
8
- @lockfile_contents = nil
9
16
  end
10
17
 
11
18
  # passwordless sudo is neither guaranteed nor desired
@@ -18,20 +25,6 @@ class FullTestDeploy < EY::Serverside::Deploy
18
25
  super
19
26
  end
20
27
 
21
- def version_specifier
22
- # Normally, the deploy task invokes the hook task by executing
23
- # the rubygems-generated wrapper (it's what's in $PATH). It
24
- # specifies the version to make sure that the pieces don't get
25
- # out of sync. However, in test mode, there's no
26
- # rubygems-generated wrapper, and so the hook task doesn't get
27
- # run because thor thinks we're trying to invoke the _$VERSION_
28
- # task instead, which doesn't exist.
29
- #
30
- # By stripping that out, we can get the hooks to actually run
31
- # inside this test.
32
- nil
33
- end
34
-
35
28
  def restart_command
36
29
  Escape.shell_command(["echo", super]) + "> #{config.paths.active_release}/restart"
37
30
  end
@@ -40,15 +33,7 @@ class FullTestDeploy < EY::Serverside::Deploy
40
33
  # deploy does not
41
34
  def bundle
42
35
  my_env = ENV.to_hash
43
-
44
- if defined?(Bundler)
45
- Bundler.with_clean_env do
46
- result = super
47
- end
48
- else
49
- result = super
50
- end
51
-
36
+ result = super
52
37
  ENV.replace(my_env)
53
38
  result
54
39
  end
@@ -57,20 +42,16 @@ class FullTestDeploy < EY::Serverside::Deploy
57
42
  config.framework_env
58
43
  end
59
44
 
60
- def services_command_check
61
- @mock_services_command_check || "which echo"
62
- end
63
-
64
- def mock_services_command_check!(value)
65
- @mock_services_command_check = value
66
- end
45
+ end
67
46
 
68
- def services_setup_command
69
- @mock_services_setup_command || "echo 'services setup command'"
47
+ class EY::Serverside::Deploy
48
+ class << self
49
+ alias_method :realnew, :new
50
+ attr_reader :config, :deployer
70
51
  end
71
-
72
- def mock_services_setup!(value)
73
- @mock_services_setup_command = value
52
+ def self.new(servers, cfg, shell)
53
+ @config = cfg
54
+ @deployer = FullTestDeploy.realnew(servers, cfg, shell)
74
55
  end
75
56
  end
76
57
 
@@ -106,6 +87,10 @@ class EY::Serverside::Strategies::IntegrationSpec
106
87
  shell.status "Garbage collecting cached git repository to reduce disk usage."
107
88
  end
108
89
 
90
+ def same?(prev, active, path)
91
+ prev == active # for our tests, being the same commit is sufficient
92
+ end
93
+
109
94
  private
110
95
 
111
96
  def install_git_base
metadata CHANGED
@@ -1,173 +1,177 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: engineyard-serverside
3
- version: !ruby/object:Gem::Version
4
- hash: 1
5
- prerelease:
6
- segments:
7
- - 2
8
- - 0
9
- - 7
10
- version: 2.0.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0.pre
5
+ prerelease: 6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - EY Cloud Team
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-05-16 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-04-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - "="
26
- - !ruby/object:Gem::Version
27
- hash: 31
28
- segments:
29
- - 1
30
- - 3
31
- - 2
18
+ requirements:
19
+ - - '='
20
+ - !ruby/object:Gem::Version
32
21
  version: 1.3.2
33
- prerelease: false
34
22
  type: :development
35
- requirement: *id001
36
- - !ruby/object:Gem::Dependency
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - '='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.2
30
+ - !ruby/object:Gem::Dependency
37
31
  name: rake
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
39
33
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 11
44
- segments:
45
- - 0
46
- - 9
47
- - 2
48
- - 2
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
49
37
  version: 0.9.2.2
50
38
  - - <
51
- - !ruby/object:Gem::Version
52
- hash: 35
53
- segments:
54
- - 10
55
- - 0
56
- version: "10.0"
57
- prerelease: false
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
58
41
  type: :development
59
- requirement: *id002
60
- - !ruby/object:Gem::Dependency
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 0.9.2.2
49
+ - - <
50
+ - !ruby/object:Gem::Version
51
+ version: '10.0'
52
+ - !ruby/object:Gem::Dependency
61
53
  name: rdoc
62
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ requirement: !ruby/object:Gem::Requirement
63
55
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
69
- - 0
70
- version: "0"
71
- prerelease: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
72
60
  type: :development
73
- requirement: *id003
74
- - !ruby/object:Gem::Dependency
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
75
69
  name: timecop
76
- version_requirements: &id004 !ruby/object:Gem::Requirement
70
+ requirement: !ruby/object:Gem::Requirement
77
71
  none: false
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- hash: 3
82
- segments:
83
- - 0
84
- version: "0"
85
- prerelease: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
86
76
  type: :development
87
- requirement: *id004
88
- - !ruby/object:Gem::Dependency
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
89
85
  name: simplecov
90
- version_requirements: &id005 !ruby/object:Gem::Requirement
86
+ requirement: !ruby/object:Gem::Requirement
91
87
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 3
96
- segments:
97
- - 0
98
- version: "0"
99
- prerelease: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
100
92
  type: :development
101
- requirement: *id005
102
- - !ruby/object:Gem::Dependency
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ - !ruby/object:Gem::Dependency
103
101
  name: engineyard-cloud-client
104
- version_requirements: &id006 !ruby/object:Gem::Requirement
102
+ requirement: !ruby/object:Gem::Requirement
105
103
  none: false
106
- requirements:
104
+ requirements:
107
105
  - - ~>
108
- - !ruby/object:Gem::Version
109
- hash: 29
110
- segments:
111
- - 1
112
- - 0
113
- - 5
114
- version: 1.0.5
106
+ - !ruby/object:Gem::Version
107
+ version: 1.0.11
108
+ type: :development
115
109
  prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ~>
114
+ - !ruby/object:Gem::Version
115
+ version: 1.0.11
116
+ - !ruby/object:Gem::Dependency
117
+ name: engineyard-serverside-adapter
118
+ requirement: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: 2.0.6
116
124
  type: :development
117
- requirement: *id006
118
- - !ruby/object:Gem::Dependency
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 2.0.6
132
+ - !ruby/object:Gem::Dependency
119
133
  name: sqlite3
120
- version_requirements: &id007 !ruby/object:Gem::Requirement
134
+ requirement: !ruby/object:Gem::Requirement
121
135
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 3
126
- segments:
127
- - 0
128
- version: "0"
129
- prerelease: false
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
130
140
  type: :development
131
- requirement: *id007
132
- - !ruby/object:Gem::Dependency
133
- name: pg
134
- version_requirements: &id008 !ruby/object:Gem::Requirement
135
- none: false
136
- requirements:
137
- - - "="
138
- - !ruby/object:Gem::Version
139
- hash: 47
140
- segments:
141
- - 0
142
- - 13
143
- - 2
144
- version: 0.13.2
145
141
  prerelease: false
146
- type: :development
147
- requirement: *id008
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
148
  description:
149
149
  email: cloud@engineyard.com
150
- executables:
150
+ executables:
151
151
  - engineyard-serverside
152
152
  extensions: []
153
-
154
153
  extra_rdoc_files: []
155
-
156
- files:
154
+ files:
157
155
  - bin/engineyard-serverside
158
156
  - lib/engineyard-serverside/about.rb
159
157
  - lib/engineyard-serverside/cli.rb
160
158
  - lib/engineyard-serverside/cli_helpers.rb
161
159
  - lib/engineyard-serverside/configuration.rb
162
160
  - lib/engineyard-serverside/default_maintenance_page.html
161
+ - lib/engineyard-serverside/dependency_manager/base.rb
162
+ - lib/engineyard-serverside/dependency_manager/bundler.rb
163
+ - lib/engineyard-serverside/dependency_manager/bundler_lock.rb
164
+ - lib/engineyard-serverside/dependency_manager/legacy_helpers.rb
165
+ - lib/engineyard-serverside/dependency_manager/npm.rb
166
+ - lib/engineyard-serverside/dependency_manager.rb
163
167
  - lib/engineyard-serverside/deploy.rb
164
168
  - lib/engineyard-serverside/deploy_hook.rb
165
169
  - lib/engineyard-serverside/deprecation.rb
166
- - lib/engineyard-serverside/lockfile_parser.rb
167
170
  - lib/engineyard-serverside/maintenance.rb
168
171
  - lib/engineyard-serverside/paths.rb
169
172
  - lib/engineyard-serverside/propagator.rb
170
- - lib/engineyard-serverside/rails_asset_support.rb
173
+ - lib/engineyard-serverside/rails_assets/strategy.rb
174
+ - lib/engineyard-serverside/rails_assets.rb
171
175
  - lib/engineyard-serverside/server.rb
172
176
  - lib/engineyard-serverside/servers.rb
173
177
  - lib/engineyard-serverside/shell/command_result.rb
@@ -266,9 +270,18 @@ files:
266
270
  - spec/fixtures/lockfiles/1.0.6-no-bundler
267
271
  - spec/fixtures/lockfiles/1.0.6-with-any-bundler
268
272
  - spec/fixtures/lockfiles/1.0.6-with-bundler
273
+ - spec/fixtures/lockfiles/1.3.1-rails-3.2.13
269
274
  - spec/fixtures/lockfiles/not-a-lockfile
275
+ - spec/fixtures/repos/assets_detected/app/assets/empty
276
+ - spec/fixtures/repos/assets_detected/config/application.rb
277
+ - spec/fixtures/repos/assets_detected/config/ey.yml
278
+ - spec/fixtures/repos/assets_detected/Gemfile
279
+ - spec/fixtures/repos/assets_detected/Gemfile.lock
280
+ - spec/fixtures/repos/assets_detected/Rakefile
281
+ - spec/fixtures/repos/assets_detected/README
270
282
  - spec/fixtures/repos/assets_disabled/app/assets/empty
271
283
  - spec/fixtures/repos/assets_disabled/config/application.rb
284
+ - spec/fixtures/repos/assets_disabled/config/ey.yml
272
285
  - spec/fixtures/repos/assets_disabled/Gemfile
273
286
  - spec/fixtures/repos/assets_disabled/Gemfile.lock
274
287
  - spec/fixtures/repos/assets_disabled/Rakefile
@@ -280,12 +293,6 @@ files:
280
293
  - spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock
281
294
  - spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile
282
295
  - spec/fixtures/repos/assets_disabled_in_ey_yml/README
283
- - spec/fixtures/repos/assets_enabled/app/assets/empty
284
- - spec/fixtures/repos/assets_enabled/config/application.rb
285
- - spec/fixtures/repos/assets_enabled/Gemfile
286
- - spec/fixtures/repos/assets_enabled/Gemfile.lock
287
- - spec/fixtures/repos/assets_enabled/Rakefile
288
- - spec/fixtures/repos/assets_enabled/README
289
296
  - spec/fixtures/repos/assets_enabled_all/app/assets/empty
290
297
  - spec/fixtures/repos/assets_enabled_all/config/application.rb
291
298
  - spec/fixtures/repos/assets_enabled_all/config/ey.yml
@@ -307,11 +314,16 @@ files:
307
314
  - spec/fixtures/repos/assets_enabled_util_only/README
308
315
  - spec/fixtures/repos/assets_in_hook/app/assets/empty
309
316
  - spec/fixtures/repos/assets_in_hook/config/application.rb
317
+ - spec/fixtures/repos/assets_in_hook/config/ey.yml
310
318
  - spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb
311
319
  - spec/fixtures/repos/assets_in_hook/Gemfile
312
320
  - spec/fixtures/repos/assets_in_hook/Gemfile.lock
313
321
  - spec/fixtures/repos/assets_in_hook/Rakefile
314
322
  - spec/fixtures/repos/assets_in_hook/README
323
+ - spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb
324
+ - spec/fixtures/repos/bundle_fails/Gemfile
325
+ - spec/fixtures/repos/bundle_fails/README
326
+ - spec/fixtures/repos/default/ey.yml
315
327
  - spec/fixtures/repos/default/Gemfile
316
328
  - spec/fixtures/repos/default/Gemfile.lock
317
329
  - spec/fixtures/repos/default/README
@@ -338,9 +350,11 @@ files:
338
350
  - spec/fixtures/repos/hooks/deploy/before_restart.rb
339
351
  - spec/fixtures/repos/hooks/deploy/before_symlink.rb
340
352
  - spec/fixtures/repos/hooks/README
353
+ - spec/fixtures/repos/no_ey_config/ey.yml
341
354
  - spec/fixtures/repos/no_ey_config/Gemfile
342
355
  - spec/fixtures/repos/no_ey_config/Gemfile.lock
343
356
  - spec/fixtures/repos/no_ey_config/README
357
+ - spec/fixtures/repos/no_gemfile_lock/ey.yml
344
358
  - spec/fixtures/repos/no_gemfile_lock/Gemfile
345
359
  - spec/fixtures/repos/no_gemfile_lock/README
346
360
  - spec/fixtures/repos/nodejs/package.json
@@ -365,40 +379,29 @@ files:
365
379
  - spec/support/integration.rb
366
380
  homepage: http://github.com/engineyard/engineyard-serverside
367
381
  licenses: []
368
-
369
382
  post_install_message:
370
383
  rdoc_options: []
371
-
372
- require_paths:
384
+ require_paths:
373
385
  - lib
374
- required_ruby_version: !ruby/object:Gem::Requirement
386
+ required_ruby_version: !ruby/object:Gem::Requirement
375
387
  none: false
376
- requirements:
377
- - - ">="
378
- - !ruby/object:Gem::Version
379
- hash: 3
380
- segments:
381
- - 0
382
- version: "0"
383
- required_rubygems_version: !ruby/object:Gem::Requirement
388
+ requirements:
389
+ - - ! '>='
390
+ - !ruby/object:Gem::Version
391
+ version: '0'
392
+ required_rubygems_version: !ruby/object:Gem::Requirement
384
393
  none: false
385
- requirements:
386
- - - ">="
387
- - !ruby/object:Gem::Version
388
- hash: 23
389
- segments:
390
- - 1
391
- - 3
392
- - 6
394
+ requirements:
395
+ - - ! '>='
396
+ - !ruby/object:Gem::Version
393
397
  version: 1.3.6
394
398
  requirements: []
395
-
396
399
  rubyforge_project:
397
400
  rubygems_version: 1.8.25
398
401
  signing_key:
399
402
  specification_version: 3
400
403
  summary: A gem that deploys ruby applications on EY Cloud instances
401
- test_files:
404
+ test_files:
402
405
  - spec/basic_deploy_spec.rb
403
406
  - spec/bundler_deploy_spec.rb
404
407
  - spec/configuration_spec.rb
@@ -422,9 +425,18 @@ test_files:
422
425
  - spec/fixtures/lockfiles/1.0.6-no-bundler
423
426
  - spec/fixtures/lockfiles/1.0.6-with-any-bundler
424
427
  - spec/fixtures/lockfiles/1.0.6-with-bundler
428
+ - spec/fixtures/lockfiles/1.3.1-rails-3.2.13
425
429
  - spec/fixtures/lockfiles/not-a-lockfile
430
+ - spec/fixtures/repos/assets_detected/app/assets/empty
431
+ - spec/fixtures/repos/assets_detected/config/application.rb
432
+ - spec/fixtures/repos/assets_detected/config/ey.yml
433
+ - spec/fixtures/repos/assets_detected/Gemfile
434
+ - spec/fixtures/repos/assets_detected/Gemfile.lock
435
+ - spec/fixtures/repos/assets_detected/Rakefile
436
+ - spec/fixtures/repos/assets_detected/README
426
437
  - spec/fixtures/repos/assets_disabled/app/assets/empty
427
438
  - spec/fixtures/repos/assets_disabled/config/application.rb
439
+ - spec/fixtures/repos/assets_disabled/config/ey.yml
428
440
  - spec/fixtures/repos/assets_disabled/Gemfile
429
441
  - spec/fixtures/repos/assets_disabled/Gemfile.lock
430
442
  - spec/fixtures/repos/assets_disabled/Rakefile
@@ -436,12 +448,6 @@ test_files:
436
448
  - spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock
437
449
  - spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile
438
450
  - spec/fixtures/repos/assets_disabled_in_ey_yml/README
439
- - spec/fixtures/repos/assets_enabled/app/assets/empty
440
- - spec/fixtures/repos/assets_enabled/config/application.rb
441
- - spec/fixtures/repos/assets_enabled/Gemfile
442
- - spec/fixtures/repos/assets_enabled/Gemfile.lock
443
- - spec/fixtures/repos/assets_enabled/Rakefile
444
- - spec/fixtures/repos/assets_enabled/README
445
451
  - spec/fixtures/repos/assets_enabled_all/app/assets/empty
446
452
  - spec/fixtures/repos/assets_enabled_all/config/application.rb
447
453
  - spec/fixtures/repos/assets_enabled_all/config/ey.yml
@@ -463,11 +469,16 @@ test_files:
463
469
  - spec/fixtures/repos/assets_enabled_util_only/README
464
470
  - spec/fixtures/repos/assets_in_hook/app/assets/empty
465
471
  - spec/fixtures/repos/assets_in_hook/config/application.rb
472
+ - spec/fixtures/repos/assets_in_hook/config/ey.yml
466
473
  - spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb
467
474
  - spec/fixtures/repos/assets_in_hook/Gemfile
468
475
  - spec/fixtures/repos/assets_in_hook/Gemfile.lock
469
476
  - spec/fixtures/repos/assets_in_hook/Rakefile
470
477
  - spec/fixtures/repos/assets_in_hook/README
478
+ - spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb
479
+ - spec/fixtures/repos/bundle_fails/Gemfile
480
+ - spec/fixtures/repos/bundle_fails/README
481
+ - spec/fixtures/repos/default/ey.yml
471
482
  - spec/fixtures/repos/default/Gemfile
472
483
  - spec/fixtures/repos/default/Gemfile.lock
473
484
  - spec/fixtures/repos/default/README
@@ -494,9 +505,11 @@ test_files:
494
505
  - spec/fixtures/repos/hooks/deploy/before_restart.rb
495
506
  - spec/fixtures/repos/hooks/deploy/before_symlink.rb
496
507
  - spec/fixtures/repos/hooks/README
508
+ - spec/fixtures/repos/no_ey_config/ey.yml
497
509
  - spec/fixtures/repos/no_ey_config/Gemfile
498
510
  - spec/fixtures/repos/no_ey_config/Gemfile.lock
499
511
  - spec/fixtures/repos/no_ey_config/README
512
+ - spec/fixtures/repos/no_gemfile_lock/ey.yml
500
513
  - spec/fixtures/repos/no_gemfile_lock/Gemfile
501
514
  - spec/fixtures/repos/no_gemfile_lock/README
502
515
  - spec/fixtures/repos/nodejs/package.json