engineyard-serverside 2.0.1 → 2.0.2
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.
@@ -60,7 +60,7 @@ module EY
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def create_revision_file_command
|
63
|
-
strategy.create_revision_file_command(
|
63
|
+
strategy.create_revision_file_command(paths.active_release)
|
64
64
|
end
|
65
65
|
|
66
66
|
def short_log_message(revision)
|
@@ -68,7 +68,7 @@ module EY
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def parse_configured_services
|
71
|
-
result = YAML.load_file "#{
|
71
|
+
result = YAML.load_file "#{paths.shared_config}/ey_services_config_deploy.yml"
|
72
72
|
return {} unless result.is_a?(Hash)
|
73
73
|
result
|
74
74
|
rescue
|
@@ -84,19 +84,26 @@ module EY
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
+
# The nodatabase.yml file is dropped by server configuration when there is
|
88
|
+
# no database in the cluster.
|
89
|
+
def has_database?
|
90
|
+
paths.shared_config.join('database.yml').exist? &&
|
91
|
+
!paths.shared_config.join('nodatabase.yml').exist?
|
92
|
+
end
|
93
|
+
|
87
94
|
def check_repository
|
88
95
|
if gemfile?
|
89
96
|
shell.status "Gemfile found."
|
90
97
|
if lockfile
|
91
98
|
shell.status "Gemfile.lock found."
|
92
|
-
if !config.ignore_database_adapter_warning? && !lockfile.any_database_adapter?
|
99
|
+
if !config.ignore_database_adapter_warning? && has_database? && !lockfile.any_database_adapter?
|
93
100
|
shell.warning <<-WARN
|
94
101
|
Gemfile.lock does not contain a recognized database adapter.
|
95
|
-
A database-adapter gem such as mysql2, mysql, or do_mysql was expected.
|
96
|
-
This can prevent applications that use
|
102
|
+
A database-adapter gem such as pg, mysql2, mysql, or do_mysql was expected.
|
103
|
+
This can prevent applications that use PostgreSQL or MySQL from booting.
|
97
104
|
|
98
105
|
To fix, add any needed adapter to your Gemfile, bundle, commit, and redeploy.
|
99
|
-
Applications not using
|
106
|
+
Applications not using PostgreSQL or MySQL can safely ignore this warning by
|
100
107
|
adding ignore_database_adapter_warning: true to the application's ey.yml file
|
101
108
|
under this environment's name and adding the file to your repository.
|
102
109
|
WARN
|
@@ -142,7 +149,7 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
|
|
142
149
|
def push_code
|
143
150
|
shell.status "Pushing code to all servers"
|
144
151
|
commands = servers.remote.map do |server|
|
145
|
-
cmd = server.sync_directory_command(
|
152
|
+
cmd = server.sync_directory_command(paths.repository_cache)
|
146
153
|
proc { shell.logged_system(cmd) }
|
147
154
|
end
|
148
155
|
futures = EY::Serverside::Future.call(commands)
|
@@ -174,7 +181,7 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
|
|
174
181
|
roles :app_master, :app, :solo, :util do
|
175
182
|
run(generate_ssh_wrapper)
|
176
183
|
end
|
177
|
-
|
184
|
+
paths.ssh_wrapper
|
178
185
|
end
|
179
186
|
end
|
180
187
|
|
@@ -184,13 +191,13 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
|
|
184
191
|
# Learned this at http://lists.mindrot.org/pipermail/openssh-unix-dev/2009-February/027271.html
|
185
192
|
# (Thanks Jim L.)
|
186
193
|
def generate_ssh_wrapper
|
187
|
-
path =
|
194
|
+
path = paths.ssh_wrapper
|
188
195
|
<<-SCRIPT
|
189
196
|
mkdir -p #{path.dirname}
|
190
197
|
[[ -x #{path} ]] || cat > #{path} <<'SSH'
|
191
198
|
#!/bin/sh
|
192
199
|
unset SSH_AUTH_SOCK
|
193
|
-
ssh -o CheckHostIP=no -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o LogLevel=INFO -o IdentityFile=#{
|
200
|
+
ssh -o CheckHostIP=no -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o LogLevel=INFO -o IdentityFile=#{paths.deploy_key} -o IdentitiesOnly=yes $*
|
194
201
|
SSH
|
195
202
|
chmod 0700 #{path}
|
196
203
|
SCRIPT
|
@@ -206,8 +213,8 @@ chmod 0700 #{path}
|
|
206
213
|
|
207
214
|
# task
|
208
215
|
def cleanup_old_releases
|
209
|
-
clean_release_directory(
|
210
|
-
clean_release_directory(
|
216
|
+
clean_release_directory(paths.releases)
|
217
|
+
clean_release_directory(paths.releases_failed)
|
211
218
|
end
|
212
219
|
|
213
220
|
# Remove all but the most-recent +count+ releases from the specified
|
@@ -226,7 +233,7 @@ chmod 0700 #{path}
|
|
226
233
|
def rollback
|
227
234
|
if config.rollback_paths!
|
228
235
|
begin
|
229
|
-
rolled_back_release =
|
236
|
+
rolled_back_release = paths.latest_release
|
230
237
|
shell.status "Rolling back to previous release: #{short_log_message(config.active_revision)}"
|
231
238
|
run_with_callbacks(:symlink)
|
232
239
|
sudo "rm -rf #{rolled_back_release}"
|
@@ -251,7 +258,7 @@ chmod 0700 #{path}
|
|
251
258
|
def migrate
|
252
259
|
return unless config.migrate?
|
253
260
|
@migrations_reached = true
|
254
|
-
cmd = "cd #{
|
261
|
+
cmd = "cd #{paths.active_release} && PATH=#{paths.binstubs}:$PATH #{config.framework_envs} #{config.migration_command}"
|
255
262
|
roles :app_master, :solo do
|
256
263
|
shell.status "Migrating: #{cmd}"
|
257
264
|
run(cmd)
|
@@ -260,12 +267,12 @@ chmod 0700 #{path}
|
|
260
267
|
|
261
268
|
# task
|
262
269
|
def copy_repository_cache
|
263
|
-
shell.status "Copying to #{
|
270
|
+
shell.status "Copying to #{paths.active_release}"
|
264
271
|
exclusions = Array(config.copy_exclude).map { |e| %|--exclude="#{e}"| }.join(' ')
|
265
|
-
run("mkdir -p #{
|
272
|
+
run("mkdir -p #{paths.active_release} #{paths.releases_failed} #{paths.shared_config} && rsync -aq #{exclusions} #{paths.repository_cache}/ #{paths.active_release}")
|
266
273
|
|
267
274
|
shell.status "Ensuring proper ownership."
|
268
|
-
sudo("chown -R #{config.user}:#{config.group} #{
|
275
|
+
sudo("chown -R #{config.user}:#{config.group} #{paths.active_release} #{paths.releases_failed}")
|
269
276
|
end
|
270
277
|
|
271
278
|
def create_revision_file
|
@@ -303,19 +310,19 @@ Deploy again if your services configuration appears incomplete or out of date.
|
|
303
310
|
def setup_sqlite3_if_necessary
|
304
311
|
if gemfile? && lockfile && lockfile.uses_sqlite3?
|
305
312
|
[
|
306
|
-
["Create databases directory if needed", "mkdir -p #{
|
307
|
-
["Creating SQLite database if needed", "touch #{
|
308
|
-
["Create config directory if needed", "mkdir -p #{
|
313
|
+
["Create databases directory if needed", "mkdir -p #{paths.shared}/databases"],
|
314
|
+
["Creating SQLite database if needed", "touch #{paths.shared}/databases/#{config.framework_env}.sqlite3"],
|
315
|
+
["Create config directory if needed", "mkdir -p #{paths.active_release_config}"],
|
309
316
|
["Generating SQLite config", <<-WRAP],
|
310
|
-
cat > #{
|
317
|
+
cat > #{paths.shared_config}/database.sqlite3.yml<<'YML'
|
311
318
|
#{config.framework_env}:
|
312
319
|
adapter: sqlite3
|
313
|
-
database: #{
|
320
|
+
database: #{paths.shared}/databases/#{config.framework_env}.sqlite3
|
314
321
|
pool: 5
|
315
322
|
timeout: 5000
|
316
323
|
YML
|
317
324
|
WRAP
|
318
|
-
["Symlink database.yml", "ln -nfs #{
|
325
|
+
["Symlink database.yml", "ln -nfs #{paths.shared_config}/database.sqlite3.yml #{paths.active_release_config}/database.yml"],
|
319
326
|
].each do |what, cmd|
|
320
327
|
shell.status "#{what}"
|
321
328
|
run(cmd)
|
@@ -323,7 +330,7 @@ WRAP
|
|
323
330
|
|
324
331
|
owner = [config.user, config.group].join(':')
|
325
332
|
shell.status "Setting ownership to #{owner}"
|
326
|
-
sudo "chown -R #{owner} #{
|
333
|
+
sudo "chown -R #{owner} #{paths.active_release}"
|
327
334
|
end
|
328
335
|
end
|
329
336
|
|
@@ -335,40 +342,40 @@ WRAP
|
|
335
342
|
end
|
336
343
|
owner = [config.user, config.group].join(':')
|
337
344
|
shell.status "Setting ownership to #{owner}"
|
338
|
-
sudo "chown -R #{owner} #{
|
345
|
+
sudo "chown -R #{owner} #{paths.active_release}"
|
339
346
|
end
|
340
347
|
|
341
348
|
def symlink_tasks
|
342
349
|
[
|
343
|
-
["Set group write permissions",
|
344
|
-
["Remove
|
345
|
-
["Create tmp directory",
|
346
|
-
["
|
347
|
-
["Create
|
348
|
-
["
|
349
|
-
["
|
350
|
-
["Symlink shared pids directory",
|
351
|
-
["Symlink other shared config files",
|
352
|
-
["Symlink
|
353
|
-
["Symlink
|
354
|
-
["Symlink
|
350
|
+
["Set group write permissions", "chmod -R g+w #{paths.active_release}"],
|
351
|
+
["Remove symlinked shared directories", "rm -rf #{paths.active_log} #{paths.public_system} #{paths.active_release}/tmp/pids"],
|
352
|
+
["Create tmp directory", "mkdir -p #{paths.active_release}/tmp"],
|
353
|
+
["Create public directory", "mkdir -p #{paths.public}"],
|
354
|
+
["Create config directory", "mkdir -p #{paths.active_release_config}"],
|
355
|
+
["Symlink shared log directory", "ln -nfs #{paths.shared_log} #{paths.active_log}"],
|
356
|
+
["Lymlink pubilc system directory", "ln -nfs #{paths.shared_system} #{paths.public_system}"],
|
357
|
+
["Symlink shared pids directory", "ln -nfs #{paths.shared}/pids #{paths.active_release}/tmp/pids"],
|
358
|
+
["Symlink other shared config files", "find #{paths.shared_config} -type f -not -name 'database.yml' -exec ln -s {} #{paths.active_release_config} \\;"],
|
359
|
+
["Symlink database.yml if needed", "if [ -f \"#{paths.shared_config}/database.yml\" ]; then ln -nfs #{paths.shared_config}/database.yml #{paths.active_release_config}/database.yml; fi"],
|
360
|
+
["Symlink newrelic.yml if needed", "if [ -f \"#{paths.shared_config}/newrelic.yml\" ]; then ln -nfs #{paths.shared_config}/newrelic.yml #{paths.active_release_config}/newrelic.yml; fi"],
|
361
|
+
["Symlink mongrel_cluster.yml if needed", "if [ -f \"#{paths.shared_config}/mongrel_cluster.yml\" ]; then ln -nfs #{paths.shared_config}/mongrel_cluster.yml #{paths.active_release_config}/mongrel_cluster.yml; fi"],
|
355
362
|
]
|
356
363
|
end
|
357
364
|
|
358
365
|
# task
|
359
366
|
def symlink
|
360
367
|
shell.status "Symlinking code."
|
361
|
-
run "rm -f #{
|
368
|
+
run "rm -f #{paths.current} && ln -nfs #{paths.active_release} #{paths.current} && find #{paths.current} -not -user #{config.user} -or -not -group #{config.group} -exec chown #{config.user}:#{config.group} {} +"
|
362
369
|
@symlink_changed = true
|
363
370
|
rescue Exception
|
364
|
-
sudo "rm -f #{
|
371
|
+
sudo "rm -f #{paths.current} && ln -nfs #{paths.previous_release(paths.active_release)} #{paths.current} && chown -R #{config.user}:#{config.group} #{paths.current}"
|
365
372
|
@symlink_changed = false
|
366
373
|
raise
|
367
374
|
end
|
368
375
|
|
369
376
|
def callback(what)
|
370
377
|
@callbacks_reached ||= true
|
371
|
-
if
|
378
|
+
if paths.deploy_hook(what).exist?
|
372
379
|
shell.status "Running deploy hook: deploy/#{what}.rb"
|
373
380
|
run Escape.shell_command(base_callback_command_for(what)) do |server, cmd|
|
374
381
|
per_instance_args = []
|
@@ -391,7 +398,7 @@ WRAP
|
|
391
398
|
ENV['GIT_SSH'] = ssh_executable.to_s
|
392
399
|
@strategy ||= config.strategy_class.new(
|
393
400
|
shell,
|
394
|
-
:repository_cache =>
|
401
|
+
:repository_cache => paths.repository_cache.to_s,
|
395
402
|
:app => config.app,
|
396
403
|
:repo => config[:repo],
|
397
404
|
:ref => config[:branch]
|
@@ -399,7 +406,7 @@ WRAP
|
|
399
406
|
end
|
400
407
|
|
401
408
|
def gemfile?
|
402
|
-
|
409
|
+
paths.gemfile.exist?
|
403
410
|
end
|
404
411
|
|
405
412
|
def base_callback_command_for(what)
|
@@ -407,7 +414,7 @@ WRAP
|
|
407
414
|
cmd << '--app' << config.app
|
408
415
|
cmd << '--environment-name' << config.environment_name
|
409
416
|
cmd << '--account-name' << config.account_name
|
410
|
-
cmd << '--release-path' <<
|
417
|
+
cmd << '--release-path' << paths.active_release.to_s
|
411
418
|
cmd << '--framework-env' << config.framework_env.to_s
|
412
419
|
cmd << '--verbose' if config.verbose
|
413
420
|
cmd
|
@@ -446,18 +453,18 @@ WRAP
|
|
446
453
|
def with_failed_release_cleanup
|
447
454
|
yield
|
448
455
|
rescue Exception
|
449
|
-
shell.status "Release #{
|
450
|
-
sudo "mv #{
|
451
|
-
clean_release_directory(
|
456
|
+
shell.status "Release #{paths.active_release} failed, saving release to #{paths.releases_failed}."
|
457
|
+
sudo "mv #{paths.active_release} #{paths.releases_failed}"
|
458
|
+
clean_release_directory(paths.releases_failed)
|
452
459
|
raise
|
453
460
|
end
|
454
461
|
|
455
462
|
def bundler_config
|
456
463
|
version = LockfileParser.default_version
|
457
464
|
options = [
|
458
|
-
"--gemfile #{
|
459
|
-
"--path #{
|
460
|
-
"--binstubs #{
|
465
|
+
"--gemfile #{paths.gemfile}",
|
466
|
+
"--path #{paths.bundled_gems}",
|
467
|
+
"--binstubs #{paths.binstubs}",
|
461
468
|
"--without #{config.bundle_without}"
|
462
469
|
]
|
463
470
|
|
@@ -470,7 +477,7 @@ WRAP
|
|
470
477
|
end
|
471
478
|
|
472
479
|
def lockfile
|
473
|
-
lockfile_path =
|
480
|
+
lockfile_path = paths.gemfile_lock
|
474
481
|
if lockfile_path.exist?
|
475
482
|
@lockfile_parser ||= LockfileParser.new(lockfile_path.read)
|
476
483
|
else
|
@@ -486,7 +493,7 @@ WRAP
|
|
486
493
|
|
487
494
|
bundler_version, install_switches = bundler_config
|
488
495
|
sudo "#{clean_environment} && #{serverside_bin} install_bundler #{bundler_version}"
|
489
|
-
run "#{clean_environment} && cd #{
|
496
|
+
run "#{clean_environment} && cd #{paths.active_release} && ruby -S bundle _#{bundler_version}_ install #{install_switches}"
|
490
497
|
|
491
498
|
write_system_version
|
492
499
|
end
|
@@ -494,25 +501,26 @@ WRAP
|
|
494
501
|
|
495
502
|
def clean_bundle_on_system_version_change
|
496
503
|
# diff exits with 0 for same and 1/2 for different/file not found.
|
497
|
-
check_ruby = "#{config.ruby_version_command} | diff - #{
|
498
|
-
check_system = "#{config.system_version_command} | diff - #{
|
504
|
+
check_ruby = "#{config.ruby_version_command} | diff - #{paths.ruby_version} >/dev/null 2>&1"
|
505
|
+
check_system = "#{config.system_version_command} | diff - #{paths.system_version} >/dev/null 2>&1"
|
499
506
|
say_cleaning = "echo 'New deploy or system version change detected, cleaning bundled gems.'"
|
500
|
-
clean_bundle = "rm -Rf #{
|
507
|
+
clean_bundle = "rm -Rf #{paths.bundled_gems}"
|
501
508
|
|
502
509
|
run "#{check_ruby} && #{check_system} || (#{say_cleaning} && #{clean_bundle})"
|
503
510
|
end
|
504
511
|
|
505
512
|
def write_system_version
|
506
|
-
store_ruby_version = "#{config.ruby_version_command} > #{
|
507
|
-
store_system_version = "#{config.system_version_command} > #{
|
513
|
+
store_ruby_version = "#{config.ruby_version_command} > #{paths.ruby_version}"
|
514
|
+
store_system_version = "#{config.system_version_command} > #{paths.system_version}"
|
508
515
|
|
509
|
-
run "mkdir -p #{
|
516
|
+
run "mkdir -p #{paths.bundled_gems} && chown #{config.user}:#{config.group} #{paths.bundled_gems}"
|
517
|
+
run "#{store_ruby_version} && #{store_system_version}"
|
510
518
|
end
|
511
519
|
|
512
520
|
def check_node_npm
|
513
|
-
if
|
521
|
+
if paths.package_json.exist?
|
514
522
|
shell.info "~> package.json detected, installing npm packages"
|
515
|
-
run "cd #{
|
523
|
+
run "cd #{paths.active_release} && npm install"
|
516
524
|
end
|
517
525
|
end
|
518
526
|
end # DeployBase
|
@@ -6,7 +6,7 @@ module EY
|
|
6
6
|
rails_version = bundled_rails_version
|
7
7
|
roles :app_master, :app, :solo do
|
8
8
|
keep_existing_assets
|
9
|
-
cmd = "cd #{
|
9
|
+
cmd = "cd #{paths.active_release} && PATH=#{paths.binstubs}:$PATH #{config.framework_envs} rake assets:precompile"
|
10
10
|
|
11
11
|
if rails_version
|
12
12
|
shell.status "Precompiling assets for rails v#{rails_version}"
|
@@ -40,20 +40,20 @@ module EY
|
|
40
40
|
return false
|
41
41
|
end
|
42
42
|
|
43
|
-
app_rb_path =
|
43
|
+
app_rb_path = paths.active_release_config.join('application.rb')
|
44
44
|
unless app_rb_path.readable? # Not a Rails app in the first place.
|
45
45
|
shell.status "Skipping asset precompilation. (not a Rails application)"
|
46
46
|
return false
|
47
47
|
end
|
48
48
|
|
49
|
-
if
|
49
|
+
if paths.active_release.join('app','assets').exist?
|
50
50
|
shell.status "Attempting Rails asset precompilation. (found directory: 'app/assets')"
|
51
51
|
else
|
52
52
|
shell.status "Skipping asset precompilation. (directory not found: 'app/assets')"
|
53
53
|
return false
|
54
54
|
end
|
55
55
|
|
56
|
-
if
|
56
|
+
if paths.public_assets.exist?
|
57
57
|
shell.status "Skipping asset compilation. Already compiled. (found directory: 'public/assets')"
|
58
58
|
return false
|
59
59
|
end
|
@@ -87,13 +87,13 @@ module EY
|
|
87
87
|
def app_has_asset_task?
|
88
88
|
# We just run this locally on the app master; everybody else should
|
89
89
|
# have the same code anyway.
|
90
|
-
task_check = "PATH=#{
|
91
|
-
cmd = "cd #{
|
92
|
-
shell.logged_system("cd #{
|
90
|
+
task_check = "PATH=#{paths.binstubs}:$PATH #{config.framework_envs} rake -T assets:precompile |grep 'assets:precompile'"
|
91
|
+
cmd = "cd #{paths.active_release} && #{task_check}"
|
92
|
+
shell.logged_system("cd #{paths.active_release} && #{task_check}").success?
|
93
93
|
end
|
94
94
|
|
95
95
|
def app_builds_own_assets?
|
96
|
-
|
96
|
+
paths.public_assets.exist?
|
97
97
|
end
|
98
98
|
|
99
99
|
# To support operations like Unicorn's hot reload, it is useful to have
|
@@ -101,8 +101,8 @@ module EY
|
|
101
101
|
# clients may request stale assets that you just deleted.
|
102
102
|
# Making use of this requires a properly-configured front-end HTTP server.
|
103
103
|
def keep_existing_assets
|
104
|
-
current =
|
105
|
-
last_asset_path =
|
104
|
+
current = paths.shared_assets
|
105
|
+
last_asset_path = paths.shared.join('last_assets')
|
106
106
|
# If there are current shared assets, move them under a 'last_assets' directory.
|
107
107
|
run <<-COMMAND
|
108
108
|
if [ -d #{current} ]; then
|
@@ -110,11 +110,11 @@ if [ -d #{current} ]; then
|
|
110
110
|
else
|
111
111
|
mkdir -p #{current} #{last_asset_path};
|
112
112
|
fi;
|
113
|
-
ln -nfs #{current} #{last_asset_path} #{
|
113
|
+
ln -nfs #{current} #{last_asset_path} #{paths.public}
|
114
114
|
COMMAND
|
115
115
|
end
|
116
116
|
|
117
|
-
def bundled_rails_version(lockfile_path =
|
117
|
+
def bundled_rails_version(lockfile_path = paths.gemfile_lock)
|
118
118
|
return unless lockfile_path.exist?
|
119
119
|
lockfile = lockfile_path.read
|
120
120
|
lockfile.each_line do |line|
|
@@ -18,9 +18,13 @@ module EY
|
|
18
18
|
@roles = :all
|
19
19
|
end
|
20
20
|
|
21
|
+
def paths
|
22
|
+
config.paths
|
23
|
+
end
|
24
|
+
|
21
25
|
def require_custom_tasks
|
22
26
|
deploy_file = ["config/eydeploy.rb", "eydeploy.rb"].map do |short_file|
|
23
|
-
|
27
|
+
paths.repository_cache.join(short_file)
|
24
28
|
end.detect do |file|
|
25
29
|
file.exist?
|
26
30
|
end
|
@@ -33,7 +37,7 @@ module EY
|
|
33
37
|
|
34
38
|
def load_ey_yml
|
35
39
|
ey_yml = ["config/ey.yml", "ey.yml"].map do |short_file|
|
36
|
-
|
40
|
+
paths.repository_cache.join(short_file)
|
37
41
|
end.detect do |file|
|
38
42
|
file.exist?
|
39
43
|
end
|
@@ -67,7 +67,10 @@ describe "Deploying an app with ey.yml" do
|
|
67
67
|
|
68
68
|
context "with a different ey.yml" do
|
69
69
|
before(:all) do
|
70
|
-
deploy_test_application('ey_yml_alt')
|
70
|
+
deploy_test_application('ey_yml_alt') do
|
71
|
+
deploy_dir.join('shared','config').mkpath
|
72
|
+
deploy_dir.join('shared','config','database.yml').open('w') { |f| f << 'something' }
|
73
|
+
end
|
71
74
|
end
|
72
75
|
|
73
76
|
it "always installs maintenance pages" do
|
@@ -79,4 +82,18 @@ describe "Deploying an app with ey.yml" do
|
|
79
82
|
read_output.should =~ /WARNING: Gemfile.lock does not contain a recognized database adapter./
|
80
83
|
end
|
81
84
|
end
|
85
|
+
|
86
|
+
context "with nodatabase.yml" do
|
87
|
+
before(:all) do
|
88
|
+
deploy_test_application('ey_yml_alt') do
|
89
|
+
deploy_dir.join('shared','config').mkpath
|
90
|
+
deploy_dir.join('shared','config','nodatabase.yml').open('w') { |f| f << 'something' }
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
it "doesn't display the database adapter warning" do
|
96
|
+
read_output.should_not =~ /WARNING: Gemfile.lock does not contain a recognized database adapter./
|
97
|
+
end
|
98
|
+
end
|
82
99
|
end
|
metadata
CHANGED
@@ -1,110 +1,119 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-serverside
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
version: 2.0.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.2
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- EY Cloud Team
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
type: :development
|
22
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
segments:
|
27
|
-
- 1
|
28
|
-
- 3
|
29
|
-
- 2
|
30
|
-
version: 1.3.2
|
12
|
+
date: 2012-09-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
31
15
|
name: rspec
|
32
|
-
requirement:
|
33
|
-
|
34
|
-
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.3.2
|
35
22
|
type: :development
|
36
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
segments:
|
41
|
-
- 0
|
42
|
-
- 9
|
43
|
-
- 2
|
44
|
-
- 2
|
45
|
-
version: 0.9.2.2
|
46
|
-
name: rake
|
47
|
-
requirement: *id002
|
48
23
|
prerelease: false
|
49
|
-
|
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
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.9.2.2
|
50
38
|
type: :development
|
51
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
segments:
|
56
|
-
- 0
|
57
|
-
version: "0"
|
58
|
-
name: rdoc
|
59
|
-
requirement: *id003
|
60
39
|
prerelease: false
|
61
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.9.2.2
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
62
54
|
type: :development
|
63
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
segments:
|
68
|
-
- 0
|
69
|
-
version: "0"
|
70
|
-
name: timecop
|
71
|
-
requirement: *id004
|
72
55
|
prerelease: false
|
73
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: timecop
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
74
70
|
type: :development
|
75
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
76
|
-
requirements:
|
77
|
-
- - ">="
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
version: "0"
|
82
|
-
name: simplecov
|
83
|
-
requirement: *id005
|
84
71
|
prerelease: false
|
85
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: simplecov
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
86
|
type: :development
|
87
|
-
|
88
|
-
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: engineyard-cloud-client
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
89
99
|
- - ~>
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
segments:
|
92
|
-
- 1
|
93
|
-
- 0
|
94
|
-
- 5
|
100
|
+
- !ruby/object:Gem::Version
|
95
101
|
version: 1.0.5
|
96
|
-
|
97
|
-
requirement: *id006
|
102
|
+
type: :development
|
98
103
|
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.0.5
|
99
110
|
description:
|
100
111
|
email: cloud@engineyard.com
|
101
|
-
executables:
|
112
|
+
executables:
|
102
113
|
- engineyard-serverside
|
103
114
|
extensions: []
|
104
|
-
|
105
115
|
extra_rdoc_files: []
|
106
|
-
|
107
|
-
files:
|
116
|
+
files:
|
108
117
|
- bin/engineyard-serverside
|
109
118
|
- lib/engineyard-serverside/cli.rb
|
110
119
|
- lib/engineyard-serverside/cli_helpers.rb
|
@@ -349,39 +358,139 @@ files:
|
|
349
358
|
- lib/vendor/thor/README.md
|
350
359
|
- lib/vendor/thor/thor.gemspec
|
351
360
|
- LICENSE
|
352
|
-
|
361
|
+
- spec/basic_deploy_spec.rb
|
362
|
+
- spec/bundler_deploy_spec.rb
|
363
|
+
- spec/configuration_spec.rb
|
364
|
+
- spec/custom_deploy_spec.rb
|
365
|
+
- spec/deploy_hook_spec.rb
|
366
|
+
- spec/deprecation_spec.rb
|
367
|
+
- spec/ey_yml_customized_deploy_spec.rb
|
368
|
+
- spec/fixtures/gitrepo/bar
|
369
|
+
- spec/fixtures/gitrepo/foo
|
370
|
+
- spec/fixtures/gitrepo.tar.gz
|
371
|
+
- spec/fixtures/invalid_hook.rb
|
372
|
+
- spec/fixtures/lockfiles/0.9-no-bundler
|
373
|
+
- spec/fixtures/lockfiles/0.9-with-bundler
|
374
|
+
- spec/fixtures/lockfiles/1.0-no-bundler
|
375
|
+
- spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler
|
376
|
+
- spec/fixtures/lockfiles/1.0.18-do_mysql
|
377
|
+
- spec/fixtures/lockfiles/1.0.18-do_postgres
|
378
|
+
- spec/fixtures/lockfiles/1.0.18-mysql
|
379
|
+
- spec/fixtures/lockfiles/1.0.18-mysql2
|
380
|
+
- spec/fixtures/lockfiles/1.0.18-pg
|
381
|
+
- spec/fixtures/lockfiles/1.0.6-no-bundler
|
382
|
+
- spec/fixtures/lockfiles/1.0.6-with-any-bundler
|
383
|
+
- spec/fixtures/lockfiles/1.0.6-with-bundler
|
384
|
+
- spec/fixtures/lockfiles/not-a-lockfile
|
385
|
+
- spec/fixtures/repos/assets_disabled/app/assets/empty
|
386
|
+
- spec/fixtures/repos/assets_disabled/config/application.rb
|
387
|
+
- spec/fixtures/repos/assets_disabled/Gemfile
|
388
|
+
- spec/fixtures/repos/assets_disabled/Gemfile.lock
|
389
|
+
- spec/fixtures/repos/assets_disabled/Rakefile
|
390
|
+
- spec/fixtures/repos/assets_disabled/README
|
391
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty
|
392
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb
|
393
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml
|
394
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile
|
395
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock
|
396
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile
|
397
|
+
- spec/fixtures/repos/assets_disabled_in_ey_yml/README
|
398
|
+
- spec/fixtures/repos/assets_enabled/app/assets/empty
|
399
|
+
- spec/fixtures/repos/assets_enabled/config/application.rb
|
400
|
+
- spec/fixtures/repos/assets_enabled/Gemfile
|
401
|
+
- spec/fixtures/repos/assets_enabled/Gemfile.lock
|
402
|
+
- spec/fixtures/repos/assets_enabled/Rakefile
|
403
|
+
- spec/fixtures/repos/assets_enabled/README
|
404
|
+
- spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml
|
405
|
+
- spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile
|
406
|
+
- spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock
|
407
|
+
- spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile
|
408
|
+
- spec/fixtures/repos/assets_enabled_in_ey_yml/README
|
409
|
+
- spec/fixtures/repos/assets_in_hook/app/assets/empty
|
410
|
+
- spec/fixtures/repos/assets_in_hook/config/application.rb
|
411
|
+
- spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb
|
412
|
+
- spec/fixtures/repos/assets_in_hook/Gemfile
|
413
|
+
- spec/fixtures/repos/assets_in_hook/Gemfile.lock
|
414
|
+
- spec/fixtures/repos/assets_in_hook/Rakefile
|
415
|
+
- spec/fixtures/repos/assets_in_hook/README
|
416
|
+
- spec/fixtures/repos/default/Gemfile
|
417
|
+
- spec/fixtures/repos/default/Gemfile.lock
|
418
|
+
- spec/fixtures/repos/default/README
|
419
|
+
- spec/fixtures/repos/ey_yml/config/ey.yml
|
420
|
+
- spec/fixtures/repos/ey_yml/deploy/before_migrate.rb
|
421
|
+
- spec/fixtures/repos/ey_yml/Gemfile
|
422
|
+
- spec/fixtures/repos/ey_yml/Gemfile.lock
|
423
|
+
- spec/fixtures/repos/ey_yml/README
|
424
|
+
- spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb
|
425
|
+
- spec/fixtures/repos/ey_yml_alt/ey.yml
|
426
|
+
- spec/fixtures/repos/ey_yml_alt/Gemfile
|
427
|
+
- spec/fixtures/repos/ey_yml_alt/Gemfile.lock
|
428
|
+
- spec/fixtures/repos/ey_yml_alt/README
|
429
|
+
- spec/fixtures/repos/hook_fails/deploy/before_migrate.rb
|
430
|
+
- spec/fixtures/repos/hook_fails/README
|
431
|
+
- spec/fixtures/repos/hooks/deploy/after_bundle.rb
|
432
|
+
- spec/fixtures/repos/hooks/deploy/after_compile_assets.rb
|
433
|
+
- spec/fixtures/repos/hooks/deploy/after_migrate.rb
|
434
|
+
- spec/fixtures/repos/hooks/deploy/after_restart.rb
|
435
|
+
- spec/fixtures/repos/hooks/deploy/after_symlink.rb
|
436
|
+
- spec/fixtures/repos/hooks/deploy/before_bundle.rb
|
437
|
+
- spec/fixtures/repos/hooks/deploy/before_compile_assets.rb
|
438
|
+
- spec/fixtures/repos/hooks/deploy/before_migrate.rb
|
439
|
+
- spec/fixtures/repos/hooks/deploy/before_restart.rb
|
440
|
+
- spec/fixtures/repos/hooks/deploy/before_symlink.rb
|
441
|
+
- spec/fixtures/repos/hooks/README
|
442
|
+
- spec/fixtures/repos/no_ey_config/Gemfile
|
443
|
+
- spec/fixtures/repos/no_ey_config/Gemfile.lock
|
444
|
+
- spec/fixtures/repos/no_ey_config/README
|
445
|
+
- spec/fixtures/repos/no_gemfile_lock/Gemfile
|
446
|
+
- spec/fixtures/repos/no_gemfile_lock/README
|
447
|
+
- spec/fixtures/repos/nodejs/package.json
|
448
|
+
- spec/fixtures/repos/nodejs/README
|
449
|
+
- spec/fixtures/repos/not_bundled/README
|
450
|
+
- spec/fixtures/repos/sqlite3/Gemfile
|
451
|
+
- spec/fixtures/repos/sqlite3/Gemfile.lock
|
452
|
+
- spec/fixtures/repos/sqlite3/README
|
453
|
+
- spec/fixtures/valid_hook.rb
|
454
|
+
- spec/git_strategy_spec.rb
|
455
|
+
- spec/lockfile_parser_spec.rb
|
456
|
+
- spec/nodejs_deploy_spec.rb
|
457
|
+
- spec/rails31_deploy_spec.rb
|
458
|
+
- spec/restart_spec.rb
|
459
|
+
- spec/rollback_spec.rb
|
460
|
+
- spec/server_spec.rb
|
461
|
+
- spec/services_deploy_spec.rb
|
462
|
+
- spec/shell_spec.rb
|
463
|
+
- spec/spec_helper.rb
|
464
|
+
- spec/sqlite3_deploy_spec.rb
|
465
|
+
- spec/support/integration.rb
|
353
466
|
homepage: http://github.com/engineyard/engineyard-serverside
|
354
467
|
licenses: []
|
355
|
-
|
356
468
|
post_install_message:
|
357
469
|
rdoc_options: []
|
358
|
-
|
359
|
-
require_paths:
|
470
|
+
require_paths:
|
360
471
|
- lib
|
361
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
472
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
473
|
+
none: false
|
474
|
+
requirements:
|
475
|
+
- - ! '>='
|
476
|
+
- !ruby/object:Gem::Version
|
477
|
+
version: '0'
|
478
|
+
segments:
|
366
479
|
- 0
|
367
|
-
|
368
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
- 1
|
374
|
-
- 3
|
375
|
-
- 6
|
480
|
+
hash: -2910105700547415890
|
481
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
482
|
+
none: false
|
483
|
+
requirements:
|
484
|
+
- - ! '>='
|
485
|
+
- !ruby/object:Gem::Version
|
376
486
|
version: 1.3.6
|
377
487
|
requirements: []
|
378
|
-
|
379
488
|
rubyforge_project:
|
380
|
-
rubygems_version: 1.
|
489
|
+
rubygems_version: 1.8.24
|
381
490
|
signing_key:
|
382
491
|
specification_version: 3
|
383
492
|
summary: A gem that deploys ruby applications on EY Cloud instances
|
384
|
-
test_files:
|
493
|
+
test_files:
|
385
494
|
- spec/basic_deploy_spec.rb
|
386
495
|
- spec/bundler_deploy_spec.rb
|
387
496
|
- spec/configuration_spec.rb
|