engineyard-serverside 2.0.7 → 2.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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