engineyard-serverside 2.0.0.pre5 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -162,7 +162,7 @@ module EY
162
162
  shell.status "Installing engineyard-serverside on #{server.hostname}"
163
163
 
164
164
  shell.logged_system(Escape.shell_command([
165
- 'scp', '-i', "#{ENV['HOME']}/.ssh/internal",
165
+ 'scp', '-i', config.paths.internal_key.to_s,
166
166
  "-o", "StrictHostKeyChecking=no",
167
167
  local_gem_file,
168
168
  "#{config.user}@#{server.hostname}:#{remote_gem_file}",
@@ -178,6 +178,15 @@ module EY
178
178
  "uname -m"
179
179
  end
180
180
 
181
+ def active_revision
182
+ paths.active_revision.read.strip
183
+ end
184
+
185
+ def latest_revision
186
+ paths.latest_revision.read.strip
187
+ end
188
+ alias revision latest_revision
189
+
181
190
  def migrate?
182
191
  !!migration_command
183
192
  end
@@ -34,9 +34,9 @@ module EY
34
34
  check_for_ey_config
35
35
  symlink_configs
36
36
  setup_sqlite3_if_necessary
37
+ run_with_callbacks(:compile_assets) # defined in RailsAssetSupport
37
38
  enable_maintenance_page
38
39
  run_with_callbacks(:migrate)
39
- run_with_callbacks(:compile_assets) # defined in RailsAssetSupport
40
40
  callback(:before_symlink)
41
41
  # We don't use run_with_callbacks for symlink because we need
42
42
  # to clean up manually if it fails.
@@ -60,7 +60,7 @@ module EY
60
60
  end
61
61
 
62
62
  def create_revision_file_command
63
- strategy.create_revision_file_command(config.release_path)
63
+ strategy.create_revision_file_command(config.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 "#{c.paths.shared_config}/ey_services_config_deploy.yml"
71
+ result = YAML.load_file "#{config.paths.shared_config}/ey_services_config_deploy.yml"
72
72
  return {} unless result.is_a?(Hash)
73
73
  result
74
74
  rescue
@@ -141,7 +141,7 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
141
141
  def push_code
142
142
  shell.status "Pushing code to all servers"
143
143
  commands = servers.remote.map do |server|
144
- cmd = server.sync_directory_command(config.repository_cache)
144
+ cmd = server.sync_directory_command(config.paths.repository_cache)
145
145
  proc { shell.logged_system(cmd) }
146
146
  end
147
147
  futures = EY::Serverside::Future.call(commands)
@@ -159,7 +159,7 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
159
159
  end
160
160
 
161
161
  def restart_command
162
- %{LANG="en_US.UTF-8" /engineyard/bin/app_#{c.app} deploy}
162
+ %{LANG="en_US.UTF-8" /engineyard/bin/app_#{config.app} deploy}
163
163
  end
164
164
 
165
165
  # GIT_SSH needs to be defined in the environment for customers with private bundler repos in their Gemfile.
@@ -173,7 +173,7 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
173
173
  roles :app_master, :app, :solo, :util do
174
174
  run(generate_ssh_wrapper)
175
175
  end
176
- ssh_wrapper_path
176
+ config.paths.ssh_wrapper
177
177
  end
178
178
  end
179
179
 
@@ -183,22 +183,18 @@ To fix this problem, commit your Gemfile.lock to your repository and redeploy.
183
183
  # Learned this at http://lists.mindrot.org/pipermail/openssh-unix-dev/2009-February/027271.html
184
184
  # (Thanks Jim L.)
185
185
  def generate_ssh_wrapper
186
- path = ssh_wrapper_path
186
+ path = config.paths.ssh_wrapper
187
187
  <<-SCRIPT
188
- mkdir -p #{File.dirname(path)}
188
+ mkdir -p #{path.dirname}
189
189
  [[ -x #{path} ]] || cat > #{path} <<'SSH'
190
190
  #!/bin/sh
191
191
  unset SSH_AUTH_SOCK
192
- ssh -o CheckHostIP=no -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o LogLevel=INFO -o IdentityFile=#{c.ssh_identity_file} -o IdentitiesOnly=yes $*
192
+ ssh -o CheckHostIP=no -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o LogLevel=INFO -o IdentityFile=#{config.paths.deploy_key} -o IdentitiesOnly=yes $*
193
193
  SSH
194
194
  chmod 0700 #{path}
195
195
  SCRIPT
196
196
  end
197
197
 
198
- def ssh_wrapper_path
199
- "#{c.paths.shared_config}/#{c.app}-ssh-wrapper"
200
- end
201
-
202
198
  # task
203
199
  def bundle
204
200
  roles :app_master, :app, :solo, :util do
@@ -209,8 +205,8 @@ chmod 0700 #{path}
209
205
 
210
206
  # task
211
207
  def cleanup_old_releases
212
- clean_release_directory(c.release_dir)
213
- clean_release_directory(c.failed_release_dir)
208
+ clean_release_directory(config.paths.releases)
209
+ clean_release_directory(config.paths.releases_failed)
214
210
  end
215
211
 
216
212
  # Remove all but the most-recent +count+ releases from the specified
@@ -227,10 +223,10 @@ chmod 0700 #{path}
227
223
 
228
224
  # task
229
225
  def rollback
230
- if c.rollback_paths!
226
+ if config.rollback_paths!
231
227
  begin
232
- rolled_back_release = c.paths.latest_release
233
- shell.status "Rolling back to previous release: #{short_log_message(c.active_revision)}"
228
+ rolled_back_release = config.paths.latest_release
229
+ shell.status "Rolling back to previous release: #{short_log_message(config.active_revision)}"
234
230
  run_with_callbacks(:symlink)
235
231
  sudo "rm -rf #{rolled_back_release}"
236
232
  bundle
@@ -252,9 +248,9 @@ chmod 0700 #{path}
252
248
 
253
249
  # task
254
250
  def migrate
255
- return unless c.migrate?
251
+ return unless config.migrate?
256
252
  @migrations_reached = true
257
- cmd = "cd #{c.release_path} && PATH=#{c.binstubs_path}:$PATH #{c.framework_envs} #{c.migration_command}"
253
+ cmd = "cd #{config.paths.active_release} && PATH=#{config.paths.binstubs}:$PATH #{config.framework_envs} #{config.migration_command}"
258
254
  roles :app_master, :solo do
259
255
  shell.status "Migrating: #{cmd}"
260
256
  run(cmd)
@@ -263,12 +259,12 @@ chmod 0700 #{path}
263
259
 
264
260
  # task
265
261
  def copy_repository_cache
266
- shell.status "Copying to #{c.release_path}"
267
- exclusions = Array(c.copy_exclude).map { |e| %|--exclude="#{e}"| }.join(' ')
268
- run("mkdir -p #{c.release_path} #{c.failed_release_dir} #{c.paths.shared_config} && rsync -aq #{exclusions} #{c.repository_cache}/ #{c.release_path}")
262
+ shell.status "Copying to #{config.paths.active_release}"
263
+ exclusions = Array(config.copy_exclude).map { |e| %|--exclude="#{e}"| }.join(' ')
264
+ run("mkdir -p #{config.paths.active_release} #{config.paths.releases_failed} #{config.paths.shared_config} && rsync -aq #{exclusions} #{config.paths.repository_cache}/ #{config.paths.active_release}")
269
265
 
270
266
  shell.status "Ensuring proper ownership."
271
- sudo("chown -R #{c.user}:#{c.group} #{c.release_path} #{c.failed_release_dir}")
267
+ sudo("chown -R #{config.user}:#{config.group} #{config.paths.active_release} #{config.paths.releases_failed}")
272
268
  end
273
269
 
274
270
  def create_revision_file
@@ -306,78 +302,78 @@ Deploy again if your services configuration appears incomplete or out of date.
306
302
  def setup_sqlite3_if_necessary
307
303
  if gemfile? && lockfile && lockfile.uses_sqlite3?
308
304
  [
309
- ["Create databases directory if needed", "mkdir -p #{c.shared_path}/databases"],
310
- ["Creating SQLite database if needed", "touch #{c.shared_path}/databases/#{c.framework_env}.sqlite3"],
311
- ["Create config directory if needed", "mkdir -p #{c.release_path}/config"],
305
+ ["Create databases directory if needed", "mkdir -p #{config.paths.shared}/databases"],
306
+ ["Creating SQLite database if needed", "touch #{config.paths.shared}/databases/#{config.framework_env}.sqlite3"],
307
+ ["Create config directory if needed", "mkdir -p #{config.paths.active_release_config}"],
312
308
  ["Generating SQLite config", <<-WRAP],
313
- cat > #{c.paths.shared_config}/database.sqlite3.yml<<'YML'
314
- #{c.framework_env}:
309
+ cat > #{config.paths.shared_config}/database.sqlite3.yml<<'YML'
310
+ #{config.framework_env}:
315
311
  adapter: sqlite3
316
- database: #{c.shared_path}/databases/#{c.framework_env}.sqlite3
312
+ database: #{config.paths.shared}/databases/#{config.framework_env}.sqlite3
317
313
  pool: 5
318
314
  timeout: 5000
319
315
  YML
320
316
  WRAP
321
- ["Symlink database.yml", "ln -nfs #{c.paths.shared_config}/database.sqlite3.yml #{c.release_path}/config/database.yml"],
317
+ ["Symlink database.yml", "ln -nfs #{config.paths.shared_config}/database.sqlite3.yml #{config.paths.active_release_config}/database.yml"],
322
318
  ].each do |what, cmd|
323
319
  shell.status "#{what}"
324
320
  run(cmd)
325
321
  end
326
322
 
327
- owner = [c.user, c.group].join(':')
323
+ owner = [config.user, config.group].join(':')
328
324
  shell.status "Setting ownership to #{owner}"
329
- sudo "chown -R #{owner} #{c.release_path}"
325
+ sudo "chown -R #{owner} #{config.paths.active_release}"
330
326
  end
331
327
  end
332
328
 
333
- def symlink_configs(release_to_link=c.release_path)
329
+ def symlink_configs
334
330
  shell.status "Preparing shared resources for release."
335
- symlink_tasks(release_to_link).each do |what, cmd|
331
+ symlink_tasks.each do |what, cmd|
336
332
  shell.substatus what
337
333
  run(cmd)
338
334
  end
339
- owner = [c.user, c.group].join(':')
335
+ owner = [config.user, config.group].join(':')
340
336
  shell.status "Setting ownership to #{owner}"
341
- sudo "chown -R #{owner} #{release_to_link}"
337
+ sudo "chown -R #{owner} #{config.paths.active_release}"
342
338
  end
343
339
 
344
- def symlink_tasks(release_to_link)
340
+ def symlink_tasks
345
341
  [
346
- ["Set group write permissions", "chmod -R g+w #{release_to_link}"],
347
- ["Remove revision-tracked shared directories from deployment", "rm -rf #{release_to_link}/log #{release_to_link}/public/system #{release_to_link}/tmp/pids"],
348
- ["Create tmp directory", "mkdir -p #{release_to_link}/tmp"],
349
- ["Symlink shared log directory", "ln -nfs #{c.paths.shared_log} #{release_to_link}/log"],
350
- ["Create public directory if needed", "mkdir -p #{release_to_link}/public"],
351
- ["Create config directory if needed", "mkdir -p #{release_to_link}/config"],
352
- ["Create system directory if needed", "ln -nfs #{c.paths.shared_system} #{release_to_link}/public/system"],
353
- ["Symlink shared pids directory", "ln -nfs #{c.shared_path}/pids #{release_to_link}/tmp/pids"],
354
- ["Symlink other shared config files", "find #{c.paths.shared_config} -type f -not -name 'database.yml' -exec ln -s {} #{release_to_link}/config \\;"],
355
- ["Symlink mongrel_cluster.yml", "ln -nfs #{c.paths.shared_config}/mongrel_cluster.yml #{release_to_link}/config/mongrel_cluster.yml"],
356
- ["Symlink database.yml", "ln -nfs #{c.paths.shared_config}/database.yml #{release_to_link}/config/database.yml"],
357
- ["Symlink newrelic.yml if needed", "if [ -f \"#{c.paths.shared_config}/newrelic.yml\" ]; then ln -nfs #{c.paths.shared_config}/newrelic.yml #{release_to_link}/config/newrelic.yml; fi"],
342
+ ["Set group write permissions", "chmod -R g+w #{config.paths.active_release}"],
343
+ ["Remove revision-tracked shared directories from deployment", "rm -rf #{config.paths.active_log} #{config.paths.public_system} #{config.paths.active_release}/tmp/pids"],
344
+ ["Create tmp directory", "mkdir -p #{config.paths.active_release}/tmp"],
345
+ ["Symlink shared log directory", "ln -nfs #{config.paths.shared_log} #{config.paths.active_log}"],
346
+ ["Create public directory if needed", "mkdir -p #{config.paths.public}"],
347
+ ["Create config directory if needed", "mkdir -p #{config.paths.active_release_config}"],
348
+ ["Create system directory if needed", "ln -nfs #{config.paths.shared_system} #{config.paths.public_system}"],
349
+ ["Symlink shared pids directory", "ln -nfs #{config.paths.shared}/pids #{config.paths.active_release}/tmp/pids"],
350
+ ["Symlink other shared config files", "find #{config.paths.shared_config} -type f -not -name 'database.yml' -exec ln -s {} #{config.paths.active_release_config} \\;"],
351
+ ["Symlink mongrel_cluster.yml", "ln -nfs #{config.paths.shared_config}/mongrel_cluster.yml #{config.paths.active_release_config}/mongrel_cluster.yml"],
352
+ ["Symlink database.yml", "ln -nfs #{config.paths.shared_config}/database.yml #{config.paths.active_release_config}/database.yml"],
353
+ ["Symlink newrelic.yml if needed", "if [ -f \"#{config.paths.shared_config}/newrelic.yml\" ]; then ln -nfs #{config.paths.shared_config}/newrelic.yml #{config.paths.active_release_config}/newrelic.yml; fi"],
358
354
  ]
359
355
  end
360
356
 
361
357
  # task
362
- def symlink(release_to_link=c.release_path)
358
+ def symlink
363
359
  shell.status "Symlinking code."
364
- run "rm -f #{c.current_path} && ln -nfs #{release_to_link} #{c.current_path} && find #{c.current_path} -not -user #{c.user} -or -not -group #{c.group} -exec chown #{c.user}:#{c.group} {} +"
360
+ run "rm -f #{config.paths.current} && ln -nfs #{config.paths.active_release} #{config.paths.current} && find #{config.paths.current} -not -user #{config.user} -or -not -group #{config.group} -exec chown #{config.user}:#{config.group} {} +"
365
361
  @symlink_changed = true
366
362
  rescue Exception
367
- sudo "rm -f #{c.current_path} && ln -nfs #{c.previous_release(release_to_link)} #{c.current_path} && chown -R #{c.user}:#{c.group} #{c.current_path}"
363
+ sudo "rm -f #{config.paths.current} && ln -nfs #{config.paths.previous_release(config.paths.active_release)} #{config.paths.current} && chown -R #{config.user}:#{config.group} #{config.paths.current}"
368
364
  @symlink_changed = false
369
365
  raise
370
366
  end
371
367
 
372
368
  def callback(what)
373
369
  @callbacks_reached ||= true
374
- if File.exist?("#{c.release_path}/deploy/#{what}.rb")
370
+ if config.paths.deploy_hook(what).exist?
375
371
  shell.status "Running deploy hook: deploy/#{what}.rb"
376
372
  run Escape.shell_command(base_callback_command_for(what)) do |server, cmd|
377
373
  per_instance_args = []
378
374
  per_instance_args << '--current-roles' << server.roles.to_a.join(' ')
379
375
  per_instance_args << '--current-name' << server.name.to_s if server.name
380
- per_instance_args << '--config' << c.to_json
376
+ per_instance_args << '--config' << config.to_json
381
377
  cmd << " " << Escape.shell_command(per_instance_args)
382
378
  end
383
379
  end
@@ -394,15 +390,15 @@ WRAP
394
390
  ENV['GIT_SSH'] = ssh_executable
395
391
  @strategy ||= config.strategy_class.new(
396
392
  shell,
397
- :repository_cache => config[:repository_cache],
398
- :app => config[:app],
393
+ :repository_cache => config.paths.repository_cache.to_s,
394
+ :app => config.app,
399
395
  :repo => config[:repo],
400
396
  :ref => config[:branch]
401
397
  )
402
398
  end
403
399
 
404
400
  def gemfile?
405
- File.exist?("#{c.release_path}/Gemfile")
401
+ config.paths.gemfile.exist?
406
402
  end
407
403
 
408
404
  def base_callback_command_for(what)
@@ -410,7 +406,7 @@ WRAP
410
406
  cmd << '--app' << config.app
411
407
  cmd << '--environment-name' << config.environment_name
412
408
  cmd << '--account-name' << config.account_name
413
- cmd << '--release-path' << config.release_path.to_s
409
+ cmd << '--release-path' << config.paths.active_release.to_s
414
410
  cmd << '--framework-env' << config.framework_env.to_s
415
411
  cmd << '--verbose' if config.verbose
416
412
  cmd
@@ -449,18 +445,18 @@ WRAP
449
445
  def with_failed_release_cleanup
450
446
  yield
451
447
  rescue Exception
452
- shell.status "Release #{c.release_path} failed, saving release to #{c.failed_release_dir}."
453
- sudo "mv #{c.release_path} #{c.failed_release_dir}"
448
+ shell.status "Release #{config.paths.active_release} failed, saving release to #{config.paths.releases_failed}."
449
+ sudo "mv #{config.paths.active_release} #{config.paths.releases_failed}"
454
450
  raise
455
451
  end
456
452
 
457
453
  def bundler_config
458
454
  version = LockfileParser.default_version
459
455
  options = [
460
- "--gemfile #{c.gemfile_path}",
461
- "--path #{c.bundled_gems_path}",
462
- "--binstubs #{c.binstubs_path}",
463
- "--without #{c.bundle_without}"
456
+ "--gemfile #{config.paths.gemfile}",
457
+ "--path #{config.paths.bundled_gems}",
458
+ "--binstubs #{config.paths.binstubs}",
459
+ "--without #{config.bundle_without}"
464
460
  ]
465
461
 
466
462
  if lockfile
@@ -472,9 +468,9 @@ WRAP
472
468
  end
473
469
 
474
470
  def lockfile
475
- lockfile_path = File.join(c.release_path, "Gemfile.lock")
476
- if File.exist?(lockfile_path)
477
- @lockfile_parser ||= LockfileParser.new(File.read(lockfile_path))
471
+ lockfile_path = config.paths.gemfile_lock
472
+ if lockfile_path.exist?
473
+ @lockfile_parser ||= LockfileParser.new(lockfile_path.read)
478
474
  else
479
475
  nil
480
476
  end
@@ -488,7 +484,7 @@ WRAP
488
484
 
489
485
  bundler_version, install_switches = bundler_config
490
486
  sudo "#{clean_environment} && #{serverside_bin} install_bundler #{bundler_version}"
491
- run "#{clean_environment} && cd #{c.release_path} && ruby -S bundle _#{bundler_version}_ install #{install_switches}"
487
+ run "#{clean_environment} && cd #{config.paths.active_release} && ruby -S bundle _#{bundler_version}_ install #{install_switches}"
492
488
 
493
489
  write_system_version
494
490
  end
@@ -496,25 +492,25 @@ WRAP
496
492
 
497
493
  def clean_bundle_on_system_version_change
498
494
  # diff exits with 0 for same and 1/2 for different/file not found.
499
- check_ruby = "#{c.ruby_version_command} | diff - #{c.ruby_version_file} >/dev/null 2>&1"
500
- check_system = "#{c.system_version_command} | diff - #{c.system_version_file} >/dev/null 2>&1"
495
+ check_ruby = "#{config.ruby_version_command} | diff - #{config.paths.ruby_version} >/dev/null 2>&1"
496
+ check_system = "#{config.system_version_command} | diff - #{config.paths.system_version} >/dev/null 2>&1"
501
497
  say_cleaning = "echo 'New deploy or system version change detected, cleaning bundled gems.'"
502
- clean_bundle = "rm -Rf #{c.bundled_gems_path}"
498
+ clean_bundle = "rm -Rf #{config.paths.bundled_gems}"
503
499
 
504
500
  run "#{check_ruby} && #{check_system} || (#{say_cleaning} && #{clean_bundle})"
505
501
  end
506
502
 
507
503
  def write_system_version
508
- store_ruby_version = "#{c.ruby_version_command} > #{c.ruby_version_file}"
509
- store_system_version = "#{c.system_version_command} > #{c.system_version_file}"
504
+ store_ruby_version = "#{config.ruby_version_command} > #{config.paths.ruby_version}"
505
+ store_system_version = "#{config.system_version_command} > #{config.paths.system_version}"
510
506
 
511
- run "mkdir -p #{c.bundled_gems_path} && #{store_ruby_version} && #{store_system_version}"
507
+ run "mkdir -p #{config.paths.bundled_gems} && #{store_ruby_version} && #{store_system_version}"
512
508
  end
513
509
 
514
510
  def check_node_npm
515
- if File.exist?("#{c.release_path}/package.json")
511
+ if config.paths.package_json.exist?
516
512
  shell.info "~> package.json detected, installing npm packages"
517
- run "cd #{c.release_path} && npm install"
513
+ run "cd #{config.paths.active_release} && npm install"
518
514
  end
519
515
  end
520
516
  end # DeployBase
@@ -8,7 +8,7 @@ module EY
8
8
  end
9
9
 
10
10
  def hook_path
11
- "#{@config.release_path}/deploy/#{@hook_name}.rb"
11
+ @config.paths.deploy_hook(@hook_name)
12
12
  end
13
13
 
14
14
  def callback_context
@@ -16,13 +16,13 @@ module EY
16
16
  end
17
17
 
18
18
  def call
19
- if File.exist?(hook_path)
20
- Dir.chdir(@config.release_path) do
19
+ if hook_path.exist?
20
+ Dir.chdir(@config.paths.active_release.to_s) do
21
21
  if desc = syntax_error(hook_path)
22
- hook_name = File.basename(hook_path)
22
+ hook_name = hook_path.basename
23
23
  abort "*** [Error] Invalid Ruby syntax in hook: #{hook_name} ***\n*** #{desc.chomp} ***"
24
24
  else
25
- eval_hook(IO.read(hook_path))
25
+ eval_hook(hook_path.read)
26
26
  end
27
27
  end
28
28
  end
@@ -37,7 +37,7 @@ module EY
37
37
 
38
38
  def display_hook_error(exception, code, hook_path)
39
39
  @shell.fatal <<-ERROR
40
- Exception raised in deploy hook #{hook_path.inspect}.
40
+ Exception raised in deploy hook #{hook_path}.
41
41
 
42
42
  #{exception.class}: #{exception.to_s}
43
43
 
@@ -3,7 +3,7 @@ require 'engineyard-serverside/shell/helpers'
3
3
  module EY
4
4
  module Serverside
5
5
  def self.deprecation_warning(msg)
6
- $stderr.puts "DEPRECATION WARNING: #{msg}"
6
+ $stderr.puts "DEPRECATION WARNING: #{msg}\n\t#{caller(2).first}"
7
7
  end
8
8
 
9
9
  def self.const_missing(const)
@@ -17,6 +17,7 @@ module EY
17
17
  def manually_enable
18
18
  if paths.deployed?
19
19
  enable
20
+ shell.info "Maintenance page enabled"
20
21
  else
21
22
  shell.fatal "Cannot enabled maintenance page. Application #{config.app_name} has never been deployed."
22
23
  false
@@ -26,6 +27,7 @@ module EY
26
27
  def manually_disable
27
28
  if paths.deployed?
28
29
  disable
30
+ shell.info "Maintenance page disabled"
29
31
  else
30
32
  shell.fatal "Cannot enabled maintenance page. Application #{config.app_name} has never been deployed."
31
33
  false
@@ -5,26 +5,34 @@ module EY
5
5
  class Paths
6
6
 
7
7
  module LegacyHelpers
8
- def deploy_to() paths.deploy_root.to_s end
9
- def release_dir() paths.releases.to_s end
10
- def failed_release_dir() paths.releases_failed.to_s end
11
- def release_path() paths.active_release.to_s end
12
- def all_releases() paths.all_releases.map { |path| path.to_s } end
13
- def previous_release(*a) paths.previous_release(*a).to_s end
14
- def latest_release() paths.latest_release.to_s end
15
- def current_path() paths.current.to_s end
16
- def shared_path() paths.shared.to_s end
17
- def maintenance_page_enabled_path() paths.enabled_maintenance_page.to_s end
18
- def repository_cache() paths.repository_cache.to_s end
19
- def bundled_gems_path() paths.bundled_gems.to_s end
20
- def ruby_version_file() paths.ruby_version.to_s end
21
- def system_version_file() paths.system_version.to_s end
22
- def binstubs_path() paths.binstubs.to_s end
23
- def gemfile_path() paths.gemfile.to_s end
24
- def active_revision() paths.active_revision.read.strip end
25
- def latest_revision() paths.latest_revision.read.strip end
26
- alias revision latest_revision
27
- def ssh_identity_file() paths.ssh_identity.to_s end
8
+ def self.legacy_path_helper(name, new_name)
9
+ define_method(name) do |*a|
10
+ EY::Serverside.deprecation_warning("config.#{name} is deprecated. Please use 'config.paths.#{new_name}' which returns a Pathname object.")
11
+ paths.send(new_name).to_s
12
+ end
13
+ end
14
+
15
+ legacy_path_helper :deploy_to, :deploy_root
16
+ legacy_path_helper :release_dir, :releases
17
+ legacy_path_helper :failed_release_dir, :releases_failed
18
+ legacy_path_helper :release_path, :active_release
19
+ legacy_path_helper :previous_release, :previous_release
20
+ legacy_path_helper :latest_release, :latest_release
21
+ legacy_path_helper :current_path, :current
22
+ legacy_path_helper :shared_path, :shared
23
+ legacy_path_helper :maintenance_page_enabled_path, :enabled_maintenance_page
24
+ legacy_path_helper :repository_cache, :repository_cache
25
+ legacy_path_helper :bundled_gems_path, :bundled_gems
26
+ legacy_path_helper :ruby_version_file, :ruby_version
27
+ legacy_path_helper :system_version_file, :system_version
28
+ legacy_path_helper :binstubs_path, :binstubs
29
+ legacy_path_helper :gemfile_path, :gemfile
30
+ legacy_path_helper :ssh_identity_file, :deploy_key
31
+
32
+ def all_releases
33
+ EY::Serverside.deprecation_warning("config.all_releases is deprecated. Please use 'config.paths.all_releases' which returns Pathname objects.")
34
+ paths.all_releases.map {|path| path.to_s }
35
+ end
28
36
  end
29
37
 
30
38
  # Maintenance page candidates in order of search preference.
@@ -50,6 +58,8 @@ module EY
50
58
 
51
59
  attr_reader :home, :deploy_root
52
60
 
61
+ def_path :internal_key, [:home, '.ssh', 'internal']
62
+
53
63
  def_path :current, [:deploy_root, 'current']
54
64
  def_path :releases, [:deploy_root, 'releases']
55
65
  def_path :releases_failed, [:deploy_root, 'releases_failed']
@@ -57,7 +67,9 @@ module EY
57
67
  def_path :shared_log, [:shared, 'log']
58
68
  def_path :shared_config, [:shared, 'config']
59
69
  def_path :shared_system, [:shared, 'system']
70
+ def_path :default_repository_cache, [:shared, 'cached-copy']
60
71
  def_path :enabled_maintenance_page, [:shared_system, 'maintenance.html']
72
+ def_path :shared_assets, [:shared, 'assets']
61
73
  def_path :bundled_gems, [:shared, 'bundled_gems']
62
74
  def_path :ruby_version, [:bundled_gems, 'RUBY_VERSION']
63
75
  def_path :system_version, [:bundled_gems, 'SYSTEM_VERSION']
@@ -65,22 +77,37 @@ module EY
65
77
  def_path :active_revision, [:active_release, 'REVISION']
66
78
  def_path :binstubs, [:active_release, 'ey_bundler_binstubs']
67
79
  def_path :gemfile, [:active_release, 'Gemfile']
80
+ def_path :gemfile_lock, [:active_release, 'Gemfile.lock']
81
+ def_path :public, [:active_release, 'public']
82
+ def_path :public_assets, [:public, 'assets']
83
+ def_path :public_system, [:public, 'system']
84
+ def_path :package_json, [:active_release, 'package.json']
85
+ def_path :active_release_config, [:active_release, 'config']
86
+ def_path :active_log, [:active_release, 'log']
68
87
 
69
88
  def initialize(opts)
70
89
  @opts = opts
71
- @home = Pathname.new(@opts[:hame] || ENV['HOME'])
90
+ @home = Pathname.new(@opts[:home] || ENV['HOME'])
72
91
  @app_name = @opts[:app_name]
73
92
  @active_release = Pathname.new(@opts[:active_release]) if @opts[:active_release]
74
93
  @repository_cache = Pathname.new(@opts[:repository_cache]) if @opts[:repository_cache]
75
94
  @deploy_root = Pathname.new(@opts[:deploy_root] || "/data/#{@app_name}")
76
95
  end
77
96
 
78
- def ssh_identity
97
+ def deploy_key
79
98
  path(:home, '.ssh', "#{@app_name}-deploy-key")
80
99
  end
81
100
 
101
+ def ssh_wrapper
102
+ path(:shared_config, "#{@app_name}-ssh-wrapper")
103
+ end
104
+
105
+ def deploy_hook(hook_name)
106
+ path(:active_release, 'deploy', "#{hook_name}.rb")
107
+ end
108
+
82
109
  def repository_cache
83
- @repository_cache ||= path(:shared, 'cached-copy')
110
+ @repository_cache ||= default_repository_cache
84
111
  end
85
112
 
86
113
  def active_release
@@ -92,8 +119,8 @@ module EY
92
119
  end
93
120
 
94
121
  # deploy_root/releases/<release before argument release path>
95
- def previous_release(current=latest_release)
96
- index = all_releases.index(current)
122
+ def previous_release(from_release=latest_release)
123
+ index = all_releases.index(from_release)
97
124
  if index && index > 0
98
125
  all_releases[index-1]
99
126
  else
@@ -6,22 +6,28 @@ 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 #{c.release_path} && PATH=#{c.binstubs_path}:$PATH #{c.framework_envs} rake assets:precompile"
10
-
11
- if config.precompile_assets_inferred?
12
- # If specifically requested, then we want to fail if compilation fails.
13
- # If we are implicitly precompiling, we want to fail non-destructively
14
- # because we don't know if the rake task exists or if the user
15
- # actually intended for assets to be compiled.
16
- cmd << %{ || (echo "Asset compilation failure ignored.\n Add 'precompile_assets: true' to ey.yml to abort deploy on failure." && true)}
17
- end
9
+ cmd = "cd #{config.paths.active_release} && PATH=#{config.paths.binstubs}:$PATH #{config.framework_envs} rake assets:precompile"
18
10
 
19
11
  if rails_version
20
12
  shell.status "Precompiling assets for rails v#{rails_version}"
21
13
  else
22
14
  shell.warning "Precompiling assets even though Rails was not bundled."
23
15
  end
24
- run(cmd)
16
+
17
+ begin
18
+ run(cmd)
19
+ rescue StandardError => e
20
+ if config.precompile_assets_inferred?
21
+ # If specifically requested, then we want to fail if compilation fails.
22
+ # If we are implicitly precompiling, we want to fail non-destructively
23
+ # because we don't know if the rake task exists or if the user
24
+ # actually intended for assets to be compiled.
25
+ shell.notice "Asset compilation failure ignored.\nAdd 'precompile_assets: true' to ey.yml to abort deploy on failure."
26
+ return
27
+ else
28
+ raise
29
+ end
30
+ end
25
31
  end
26
32
  end
27
33
 
@@ -30,39 +36,40 @@ module EY
30
36
  shell.status "Attempting Rails asset precompilation. (enabled in config)"
31
37
  return true
32
38
  elsif config.skip_precompile_assets?
33
- shell.status "Skipping asset precompilation. (disabled in config)"
39
+ shell.status "Skipping asset precompilation. (disabled in ey.yml)"
34
40
  return false
35
41
  end
36
42
 
37
- app_rb_path = File.join(c.release_path, 'config', 'application.rb')
38
- unless File.readable?(app_rb_path) # Not a Rails app in the first place.
43
+ app_rb_path = config.paths.active_release_config.join('application.rb')
44
+ unless app_rb_path.readable? # Not a Rails app in the first place.
39
45
  shell.status "Skipping asset precompilation. (not a Rails application)"
40
46
  return false
41
47
  end
42
48
 
43
- if FileTest.exist?(File.join(c.release_path, 'app', 'assets'))
49
+ if config.paths.active_release.join('app','assets').exist?
44
50
  shell.status "Attempting Rails asset precompilation. (found directory: 'app/assets')"
45
51
  else
46
52
  shell.status "Skipping asset precompilation. (directory not found: 'app/assets')"
47
53
  return false
48
54
  end
49
55
 
50
- if app_builds_own_assets?
56
+ if config.paths.public_assets.exist?
51
57
  shell.status "Skipping asset compilation. Already compiled. (found directory: 'public/assets')"
52
58
  return false
53
59
  end
60
+
54
61
  if app_disables_assets?(app_rb_path)
55
62
  shell.status "Skipping asset compilation. (application.rb has disabled asset compilation)"
56
63
  return false
57
64
  end
58
- # This check is very expensive, and has been deemed not worth the time.
59
- # Leaving this here in case someone comes up with a faster way.
60
- =begin
61
- unless app_has_asset_task?
62
- shell.status "No 'assets:precompile' Rake task found. Skipping."
63
- return
64
- end
65
- =end
65
+
66
+ # This check is very expensive, and has been deemed not worth the time.
67
+ # Leaving this here in case someone comes up with a faster way.
68
+ #unless app_has_asset_task?
69
+ # shell.status "No 'assets:precompile' Rake task found. Skipping."
70
+ # return
71
+ #end
72
+
66
73
  true
67
74
  end
68
75
 
@@ -80,13 +87,13 @@ module EY
80
87
  def app_has_asset_task?
81
88
  # We just run this locally on the app master; everybody else should
82
89
  # have the same code anyway.
83
- task_check = "PATH=#{c.binstubs_path}:$PATH #{c.framework_envs} rake -T assets:precompile |grep 'assets:precompile'"
84
- cmd = "cd #{c.release_path} && #{task_check}"
85
- shell.logged_system("cd #{c.release_path} && #{task_check}").success?
90
+ task_check = "PATH=#{config.paths.binstubs}:$PATH #{config.framework_envs} rake -T assets:precompile |grep 'assets:precompile'"
91
+ cmd = "cd #{config.paths.active_release} && #{task_check}"
92
+ shell.logged_system("cd #{config.paths.active_release} && #{task_check}").success?
86
93
  end
87
94
 
88
95
  def app_builds_own_assets?
89
- File.directory?(File.join(c.release_path, 'public', 'assets'))
96
+ config.paths.public_assets.exist?
90
97
  end
91
98
 
92
99
  # To support operations like Unicorn's hot reload, it is useful to have
@@ -94,8 +101,8 @@ module EY
94
101
  # clients may request stale assets that you just deleted.
95
102
  # Making use of this requires a properly-configured front-end HTTP server.
96
103
  def keep_existing_assets
97
- current = File.join(c.shared_path, 'assets')
98
- last_asset_path = File.join(c.shared_path, 'last_assets')
104
+ current = config.paths.shared_assets
105
+ last_asset_path = config.paths.shared.join('last_assets')
99
106
  # If there are current shared assets, move them under a 'last_assets' directory.
100
107
  run <<-COMMAND
101
108
  if [ -d #{current} ]; then
@@ -103,14 +110,13 @@ if [ -d #{current} ]; then
103
110
  else
104
111
  mkdir -p #{current} #{last_asset_path};
105
112
  fi;
106
- ln -nfs #{current} #{last_asset_path} #{c.release_path}/public
113
+ ln -nfs #{current} #{last_asset_path} #{config.paths.public}
107
114
  COMMAND
108
115
  end
109
116
 
110
- def bundled_rails_version(lockfile_path = nil)
111
- lockfile_path ||= File.join(c.release_path, 'Gemfile.lock')
112
- return unless File.exist?(lockfile_path)
113
- lockfile = File.open(lockfile_path) {|f| f.read}
117
+ def bundled_rails_version(lockfile_path = config.paths.gemfile_lock)
118
+ return unless lockfile_path.exist?
119
+ lockfile = lockfile_path.read
114
120
  lockfile.each_line do |line|
115
121
  # scan for gemname (version) toplevel deps.
116
122
  # Likely doesn't handle ancient Bundler versions, but
@@ -4,7 +4,12 @@ module EY
4
4
  module Serverside
5
5
  class Task
6
6
  attr_reader :servers, :config, :shell
7
- alias :c :config
7
+
8
+ # deprecated, please don't use
9
+ def c
10
+ EY::Serverside.deprecation_warning("The method 'c' is deprecated in favor of 'config' for better clarity.")
11
+ config
12
+ end
8
13
 
9
14
  def initialize(servers, conf, shell)
10
15
  @servers = servers
@@ -15,14 +20,14 @@ module EY
15
20
 
16
21
  def require_custom_tasks
17
22
  deploy_file = ["config/eydeploy.rb", "eydeploy.rb"].map do |short_file|
18
- File.join(c.repository_cache, short_file)
23
+ config.paths.repository_cache.join(short_file)
19
24
  end.detect do |file|
20
- File.exist?(file)
25
+ file.exist?
21
26
  end
22
27
 
23
28
  if deploy_file
24
29
  shell.status "Loading deployment task overrides from #{deploy_file}"
25
- instance_eval(File.read(deploy_file))
30
+ instance_eval(deploy_file.read)
26
31
  true
27
32
  else
28
33
  false
@@ -31,14 +36,14 @@ module EY
31
36
 
32
37
  def load_ey_yml
33
38
  ey_yml = ["config/ey.yml", "ey.yml"].map do |short_file|
34
- File.join(c.repository_cache, short_file)
39
+ config.paths.repository_cache.join(short_file)
35
40
  end.detect do |file|
36
- File.exist?(file)
41
+ file.exist?
37
42
  end
38
43
 
39
44
  if ey_yml
40
45
  shell.status "Loading deploy configuration in #{ey_yml}"
41
- data = YAML.load_file(ey_yml)
46
+ data = YAML.load_file(ey_yml.to_s)
42
47
  config.load_ey_yml_data(data, shell)
43
48
  else
44
49
  false
@@ -1,5 +1,5 @@
1
1
  module EY
2
2
  module Serverside
3
- VERSION = '2.0.0.pre5'
3
+ VERSION = '2.0.0.rc1'
4
4
  end
5
5
  end
@@ -58,9 +58,9 @@ describe "the EY::Serverside::Deploy API" do
58
58
  bundle
59
59
  setup_services
60
60
  symlink_configs
61
+ compile_assets
61
62
  enable_maintenance_page
62
63
  migrate
63
- compile_assets
64
64
  symlink
65
65
  restart
66
66
  disable_maintenance_page
@@ -29,7 +29,7 @@ describe "deploy hooks" do
29
29
  end
30
30
 
31
31
  it "retains the failed release" do
32
- release_name = File.basename(@config.release_path)
32
+ release_name = @config.paths.active_release.basename
33
33
  deploy_dir.join('releases_failed', release_name).should be_directory
34
34
  end
35
35
  end
@@ -254,7 +254,7 @@ describe "deploy hooks" do
254
254
  deploy_hook.eval_hook('methedo_no_existo')
255
255
  }.should raise_error(NameError)
256
256
  out = read_output
257
- out.should =~ %r|FATAL: Exception raised in deploy hook "/data/app_name/releases/\d+/deploy/fake_test_hook.rb".|
257
+ out.should =~ %r|FATAL: Exception raised in deploy hook /data/app_name/releases/\d+/deploy/fake_test_hook.rb.|
258
258
  out.should =~ %r|NameError: undefined local variable or method `methedo_no_existo' for|
259
259
  out.should =~ %r|Please fix this error before retrying.|
260
260
  end
@@ -43,15 +43,16 @@ describe "Deploying an app with ey.yml" do
43
43
  end
44
44
 
45
45
  it "does not remove an existing maintenance page" do
46
+ maintenance = EY::Serverside::Maintenance.new(test_servers, @config, test_shell)
46
47
  deploy_dir.join('current','maintenance_disabled').delete
47
- @deployer.enable_maintenance_page
48
+ maintenance.manually_enable
48
49
  deploy_dir.join('shared','system','maintenance.html').should exist
49
50
  redeploy_test_application
50
51
  read_output.should =~ /Maintenance page is still up./
51
52
  deploy_dir.join('shared','system','maintenance.html').should exist
52
53
  deploy_dir.join('current','maintenance_disabled').should_not exist
53
54
  deploy_dir.join('current','maintenance_enabled').should exist
54
- @deployer.disable_maintenance_page
55
+ maintenance.manually_disable
55
56
  deploy_dir.join('shared','system','maintenance.html').should_not exist
56
57
  end
57
58
 
@@ -0,0 +1,2 @@
1
+ run 'touch custom_compiled && mkdir -p public/assets'
2
+ $stderr.puts Dir.pwd
@@ -1,5 +1,5 @@
1
1
  run "echo '#{config.custom}' > custom_hook"
2
- if File.exist?(config.maintenance_page_enabled_path)
2
+ if config.paths.enabled_maintenance_page.exist?
3
3
  run "echo 'maintenance page enabled' > maintenance_enabled"
4
4
  else
5
5
  run "echo 'no maintenance page' > maintenance_disabled"
@@ -1,5 +1,5 @@
1
1
  run "echo '#{config.custom}' > custom_hook"
2
- if File.exist?(config.maintenance_page_enabled_path)
2
+ if config.paths.enabled_maintenance_page.exist?
3
3
  run "echo 'maintenance page enabled' > maintenance_enabled"
4
4
  else
5
5
  run "echo 'no maintenance page' > maintenance_disabled"
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe "the git deploy strategy" do
4
4
  subject do
5
5
  fixtures_dir = Pathname.new(__FILE__).dirname.join("fixtures")
6
- gitrepo_dir = Pathname.new(Dir.tmpdir).join("gitrepo-#{Time.now.to_i}-#{$$}")
6
+ gitrepo_dir = tmpdir.join("gitrepo-#{Time.now.to_i}-#{$$}")
7
7
  gitrepo_dir.mkdir
8
8
  system "tar xzf #{fixtures_dir.join('gitrepo.tar.gz')} --strip-components 1 -C #{gitrepo_dir}"
9
9
 
@@ -5,7 +5,7 @@ describe "Deploying an application with services" do
5
5
  describe "with services" do
6
6
  before do
7
7
  deploy_test_application('no_ey_config') do |deployer|
8
- @shared_services_file = deployer.shared_path.join('config', 'ey_services_config_deploy.yml')
8
+ @shared_services_file = deployer.config.paths.shared_config.join('ey_services_config_deploy.yml')
9
9
  @services_yml = {"servicio" => {"foo" => "bar"}}.to_yaml
10
10
  deployer.mock_services_setup!("echo '#{@services_yml}' > #{@shared_services_file}")
11
11
  end
@@ -30,8 +30,8 @@ describe "Deploying an application with services" do
30
30
  describe "deploy with invalid yaml ey_services_config_deploy" do
31
31
  before do
32
32
  deploy_test_application do |deployer|
33
- @shared_services_file = deployer.shared_path.join('config', 'ey_services_config_deploy.yml')
34
- @symlinked_services_file = deployer.release_path.join('config', 'ey_services_config_deploy.yml')
33
+ @shared_services_file = deployer.config.paths.shared_config.join('ey_services_config_deploy.yml')
34
+ @symlinked_services_file = deployer.config.paths.active_release_config.join('ey_services_config_deploy.yml')
35
35
  @invalid_services_yml = "42"
36
36
  deployer.mock_services_setup!("echo '#{@invalid_services_yml}' > #{@shared_services_file}")
37
37
  end
@@ -53,8 +53,8 @@ describe "Deploying an application with services" do
53
53
  describe "a succesful deploy" do
54
54
  before do
55
55
  deploy_test_application do |deployer|
56
- @shared_services_file = deployer.shared_path.join('config', 'ey_services_config_deploy.yml')
57
- @symlinked_services_file = deployer.release_path.join('config', 'ey_services_config_deploy.yml')
56
+ @shared_services_file = deployer.config.paths.shared_config.join('ey_services_config_deploy.yml')
57
+ @symlinked_services_file = deployer.config.paths.active_release_config.join('ey_services_config_deploy.yml')
58
58
  @services_yml = {"servicio" => {"foo" => "bar"}}.to_yaml
59
59
 
60
60
  deployer.mock_services_setup!("echo '#{@services_yml}' > #{@shared_services_file}")
data/spec/shell_spec.rb CHANGED
@@ -9,7 +9,7 @@ describe EY::Serverside::Shell do
9
9
  time3 = Time.local(2008, 9, 1, 12, 10, 25)
10
10
 
11
11
  @output = StringIO.new
12
- @shell = EY::Serverside::Shell.new(:verbose => true, :stdout => @output, :stderr => @output, :log_path => Pathname.new(Dir.tmpdir).join("engineyard-serverside-#{Time.now.to_i}-${$$}.log"), :start_time => time1)
12
+ @shell = EY::Serverside::Shell.new(:verbose => true, :stdout => @output, :stderr => @output, :log_path => tmpdir.join("engineyard-serverside-#{Time.now.to_i}-#{$$}.log"), :start_time => time1)
13
13
 
14
14
  Timecop.freeze(time1) do
15
15
  @shell.debug('debug')
data/spec/spec_helper.rb CHANGED
@@ -17,6 +17,7 @@ require 'engineyard-serverside'
17
17
  require File.expand_path('../support/integration', __FILE__)
18
18
 
19
19
  FIXTURES_DIR = Pathname.new(__FILE__).dirname.join("fixtures")
20
+ TMPDIR = Pathname.new(__FILE__).dirname.parent.join('tmp')
20
21
  GROUP = `id -gn`.strip
21
22
 
22
23
  module EY
@@ -48,9 +49,14 @@ Spec::Runner.configure do |config|
48
49
  end
49
50
 
50
51
  config.before(:all) do
52
+ make_tmpdir
51
53
  EY::Serverside.dna_json = {}.to_json
52
54
  end
53
55
 
56
+ config.after(:all) do
57
+ delete_tmpdir
58
+ end
59
+
54
60
  class VerboseStringIO < StringIO
55
61
  def <<(str)
56
62
  if ENV['VERBOSE'] || ENV['DEBUG']
@@ -60,6 +66,18 @@ Spec::Runner.configure do |config|
60
66
  end
61
67
  end
62
68
 
69
+ def tmpdir
70
+ TMPDIR
71
+ end
72
+
73
+ def make_tmpdir
74
+ tmpdir.mkpath
75
+ end
76
+
77
+ def delete_tmpdir
78
+ tmpdir.exist? && tmpdir.rmtree
79
+ end
80
+
63
81
  def stdout
64
82
  @stdout ||= VerboseStringIO.new
65
83
  end
@@ -84,7 +102,7 @@ Spec::Runner.configure do |config|
84
102
 
85
103
  def test_shell
86
104
  @test_shell ||= begin
87
- log_path = Pathname.new(Dir.tmpdir).join("serverside-deploy-#{Time.now.to_i}-#{$$}.log")
105
+ log_path = tmpdir.join("serverside-deploy-#{Time.now.to_i}-#{$$}.log")
88
106
  EY::Serverside::Shell.new(:verbose => true, :log_path => log_path, :stdout => stdout, :stderr => stderr)
89
107
  end
90
108
  end
@@ -94,7 +112,7 @@ Spec::Runner.configure do |config|
94
112
  end
95
113
 
96
114
  def deploy_dir
97
- @deploy_dir ||= Pathname.new(Dir.tmpdir).join("serverside-deploy-#{Time.now.to_i}-#{$$}")
115
+ @deploy_dir ||= tmpdir.join("serverside-deploy-#{Time.now.to_i}-#{$$}")
98
116
  end
99
117
 
100
118
  # set up EY::Serverside::Server like we're on a solo
@@ -7,8 +7,8 @@ describe "Deploying an application with sqlite3 as the only DB adapter in the Ge
7
7
  @framework_env = nil
8
8
 
9
9
  deploy_test_application('sqlite3') do |deployer|
10
- @shared_path = deployer.shared_path
11
- @release_path = deployer.release_path
10
+ @shared_path = deployer.config.paths.shared
11
+ @release_path = deployer.config.paths.active_release
12
12
  @framework_env = deployer.framework_env
13
13
  end
14
14
  end
@@ -33,7 +33,7 @@ class FullTestDeploy < EY::Serverside::Deploy
33
33
  end
34
34
 
35
35
  def restart_command
36
- Escape.shell_command(["echo", super]) + "> #{c.release_path}/restart"
36
+ Escape.shell_command(["echo", super]) + "> #{config.paths.active_release}/restart"
37
37
  end
38
38
 
39
39
  # we're probably running this spec under bundler, but a real
@@ -53,14 +53,6 @@ class FullTestDeploy < EY::Serverside::Deploy
53
53
  result
54
54
  end
55
55
 
56
- def shared_path
57
- Pathname.new(config.shared_path)
58
- end
59
-
60
- def release_path
61
- Pathname.new(config.release_path)
62
- end
63
-
64
56
  def framework_env
65
57
  config.framework_env
66
58
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard-serverside
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3919216497
4
+ hash: 2346291293
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
9
  - 0
10
- - pre
11
- - 5
12
- version: 2.0.0.pre5
10
+ - rc
11
+ - 1
12
+ version: 2.0.0.rc1
13
13
  platform: ruby
14
14
  authors:
15
15
  - EY Cloud Team
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-06-14 00:00:00 Z
20
+ date: 2012-06-21 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rspec
@@ -394,7 +394,7 @@ files:
394
394
  - spec/fixtures/repos/assets_enabled_in_ey_yml/README
395
395
  - spec/fixtures/repos/assets_in_hook/app/assets/empty
396
396
  - spec/fixtures/repos/assets_in_hook/config/application.rb
397
- - spec/fixtures/repos/assets_in_hook/deploy/before_migrate.rb
397
+ - spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb
398
398
  - spec/fixtures/repos/assets_in_hook/Gemfile
399
399
  - spec/fixtures/repos/assets_in_hook/Gemfile.lock
400
400
  - spec/fixtures/repos/assets_in_hook/Rakefile
@@ -535,7 +535,7 @@ test_files:
535
535
  - spec/fixtures/repos/assets_enabled_in_ey_yml/README
536
536
  - spec/fixtures/repos/assets_in_hook/app/assets/empty
537
537
  - spec/fixtures/repos/assets_in_hook/config/application.rb
538
- - spec/fixtures/repos/assets_in_hook/deploy/before_migrate.rb
538
+ - spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb
539
539
  - spec/fixtures/repos/assets_in_hook/Gemfile
540
540
  - spec/fixtures/repos/assets_in_hook/Gemfile.lock
541
541
  - spec/fixtures/repos/assets_in_hook/Rakefile
@@ -1 +0,0 @@
1
- run 'touch custom_compiled && mkdir public/assets'