engineyard-serverside 1.6.5 → 1.7.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. data/lib/engineyard-serverside.rb +2 -0
  2. data/lib/engineyard-serverside/cli.rb +83 -48
  3. data/lib/engineyard-serverside/configuration.rb +85 -18
  4. data/lib/engineyard-serverside/deploy.rb +105 -91
  5. data/lib/engineyard-serverside/deploy_hook.rb +22 -20
  6. data/lib/engineyard-serverside/deprecation.rb +9 -17
  7. data/lib/engineyard-serverside/future.rb +10 -4
  8. data/lib/engineyard-serverside/futures/celluloid.rb +3 -13
  9. data/lib/engineyard-serverside/futures/dataflow.rb +8 -13
  10. data/lib/engineyard-serverside/lockfile_parser.rb +1 -1
  11. data/lib/engineyard-serverside/rails_asset_support.rb +26 -10
  12. data/lib/engineyard-serverside/server.rb +17 -12
  13. data/lib/engineyard-serverside/shell.rb +98 -0
  14. data/lib/engineyard-serverside/shell/formatter.rb +71 -0
  15. data/lib/engineyard-serverside/shell/helpers.rb +29 -0
  16. data/lib/engineyard-serverside/strategies/git.rb +33 -63
  17. data/lib/engineyard-serverside/task.rb +34 -13
  18. data/lib/engineyard-serverside/version.rb +1 -1
  19. data/spec/basic_deploy_spec.rb +15 -50
  20. data/spec/bundler_deploy_spec.rb +3 -44
  21. data/spec/configuration_spec.rb +72 -0
  22. data/spec/custom_deploy_spec.rb +3 -4
  23. data/spec/deploy_hook_spec.rb +210 -162
  24. data/spec/deprecation_spec.rb +4 -26
  25. data/spec/ey_yml_customized_deploy_spec.rb +68 -0
  26. data/spec/fixtures/repos/assets_disabled/Gemfile +6 -0
  27. data/spec/fixtures/repos/assets_disabled/Gemfile.lock +90 -0
  28. data/spec/fixtures/repos/assets_disabled/README +1 -0
  29. data/spec/fixtures/repos/assets_disabled/Rakefile +5 -0
  30. data/spec/fixtures/repos/assets_disabled/config/application.rb +5 -0
  31. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +6 -0
  32. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +90 -0
  33. data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +1 -0
  34. data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +5 -0
  35. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +5 -0
  36. data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +4 -0
  37. data/spec/fixtures/repos/assets_enabled/Gemfile +6 -0
  38. data/spec/fixtures/repos/assets_enabled/Gemfile.lock +90 -0
  39. data/spec/fixtures/repos/assets_enabled/README +1 -0
  40. data/spec/fixtures/repos/assets_enabled/Rakefile +5 -0
  41. data/spec/fixtures/repos/assets_enabled/config/application.rb +5 -0
  42. data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +1 -0
  43. data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +5 -0
  44. data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +4 -0
  45. data/spec/fixtures/repos/assets_in_hook/Gemfile +6 -0
  46. data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +90 -0
  47. data/spec/fixtures/repos/assets_in_hook/README +2 -0
  48. data/spec/fixtures/repos/assets_in_hook/Rakefile +5 -0
  49. data/spec/fixtures/repos/assets_in_hook/config/application.rb +5 -0
  50. data/spec/fixtures/repos/assets_in_hook/deploy/before_migrate.rb +1 -0
  51. data/spec/fixtures/repos/default/Gemfile +5 -0
  52. data/spec/fixtures/repos/default/Gemfile.lock +14 -0
  53. data/spec/fixtures/repos/default/README +5 -0
  54. data/spec/fixtures/repos/ey_yml/Gemfile +4 -0
  55. data/spec/fixtures/repos/ey_yml/Gemfile.lock +12 -0
  56. data/spec/fixtures/repos/ey_yml/README +1 -0
  57. data/spec/fixtures/repos/ey_yml/config/ey.yml +12 -0
  58. data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +6 -0
  59. data/spec/fixtures/repos/ey_yml_alt/Gemfile +4 -0
  60. data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +12 -0
  61. data/spec/fixtures/repos/ey_yml_alt/README +1 -0
  62. data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +6 -0
  63. data/spec/fixtures/repos/ey_yml_alt/ey.yml +12 -0
  64. data/spec/fixtures/repos/hook_fails/README +1 -0
  65. data/spec/fixtures/repos/hook_fails/deploy/before_migrate.rb +1 -0
  66. data/spec/fixtures/repos/hooks/README +1 -0
  67. data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +1 -0
  68. data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +1 -0
  69. data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +1 -0
  70. data/spec/fixtures/repos/hooks/deploy/after_restart.rb +1 -0
  71. data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +1 -0
  72. data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +1 -0
  73. data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +1 -0
  74. data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +1 -0
  75. data/spec/fixtures/repos/hooks/deploy/before_restart.rb +1 -0
  76. data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +1 -0
  77. data/spec/fixtures/repos/no_ey_config/Gemfile +4 -0
  78. data/spec/fixtures/repos/no_ey_config/Gemfile.lock +12 -0
  79. data/spec/fixtures/repos/no_ey_config/README +1 -0
  80. data/spec/fixtures/repos/no_gemfile_lock/Gemfile +5 -0
  81. data/spec/fixtures/repos/no_gemfile_lock/README +1 -0
  82. data/spec/fixtures/repos/nodejs/README +1 -0
  83. data/spec/fixtures/repos/nodejs/package.json +7 -0
  84. data/spec/fixtures/repos/not_bundled/README +1 -0
  85. data/spec/fixtures/{gemfiles/1.0.21-rails-31-with-sqlite → repos/sqlite3/Gemfile} +0 -0
  86. data/spec/fixtures/{lockfiles/1.0.21-rails-31-with-sqlite → repos/sqlite3/Gemfile.lock} +0 -0
  87. data/spec/fixtures/repos/sqlite3/README +1 -0
  88. data/spec/git_strategy_spec.rb +11 -2
  89. data/spec/lockfile_parser_spec.rb +8 -3
  90. data/spec/nodejs_deploy_spec.rb +1 -26
  91. data/spec/rails31_deploy_spec.rb +23 -31
  92. data/spec/services_deploy_spec.rb +41 -100
  93. data/spec/shell_spec.rb +50 -0
  94. data/spec/spec_helper.rb +80 -66
  95. data/spec/sqlite3_deploy_spec.rb +10 -16
  96. data/spec/support/integration.rb +45 -139
  97. metadata +233 -78
  98. data/lib/engineyard-serverside/logged_output.rb +0 -91
  99. data/spec/logged_output_spec.rb +0 -55
@@ -1,91 +0,0 @@
1
- require 'systemu'
2
-
3
- module EY
4
- module Serverside
5
- module LoggedOutput
6
-
7
- class Tee
8
- def initialize(*streams)
9
- @streams = streams.flatten
10
- end
11
-
12
- def <<(output)
13
- @streams.each do |s|
14
- s << output
15
- s.flush
16
- end
17
- self
18
- end
19
- end # Tee
20
-
21
- @@logfile = File.join(ENV['HOME'], 'ey.log')
22
- def self.logfile=(filename)
23
- File.unlink filename if File.exist?(filename) # start fresh
24
- @@logfile = filename
25
- end
26
-
27
- def self.logfile
28
- @@logfile
29
- end
30
-
31
- @@verbose = false
32
- def self.verbose=(v)
33
- @@verbose = !!v
34
- end
35
-
36
- def self.verbose?
37
- @@verbose
38
- end
39
-
40
- def verbose?
41
- EY::Serverside::LoggedOutput.verbose?
42
- end
43
-
44
- def warning(msg)
45
- info "WARNING: #{msg}\n".gsub(/^/,'!> ')
46
- end
47
-
48
- def info(msg)
49
- with_logfile do |log|
50
- Tee.new($stdout, log) << ("#{with_timestamp(msg)}\n")
51
- end
52
- end
53
-
54
- def debug(msg)
55
- with_logfile do |log|
56
- log << "#{with_timestamp(msg)}\n"
57
- end
58
- end
59
-
60
- def logged_system(cmd)
61
- with_logfile do |log|
62
- out = verbose? ? Tee.new($stdout, log) : log
63
- err = Tee.new($stderr, log) # we always want to see errors
64
-
65
- cmd = "sh -l -c #{Escape.shell_command([cmd])}"
66
- puts "running #{cmd}" if ENV['DEBUG']
67
- out << with_timestamp(":: running #{cmd}\n")
68
- status = systemu cmd, 'stdout' => out, 'stderr' => err
69
- puts "exit status= #{status.exitstatus}" if ENV['DEBUG']
70
- status.exitstatus == 0
71
- end
72
- end
73
-
74
- private
75
- def with_logfile
76
- File.open(logfile, 'a') {|f| yield f }
77
- end
78
-
79
- def logfile
80
- EY::Serverside::LoggedOutput.logfile
81
- end
82
-
83
- def with_timestamp(msg)
84
- return msg unless respond_to?(:starting_time)
85
- time_passed = Time.now.to_i - starting_time.to_i
86
- timestamp = "+%2dm %02ds " % time_passed.divmod(60)
87
- msg.gsub(/^/, timestamp)
88
- end
89
- end
90
- end
91
- end
@@ -1,55 +0,0 @@
1
- require 'spec_helper'
2
- require 'tempfile'
3
- require 'timecop'
4
-
5
- class SampleLogUser
6
- include EY::Serverside::LoggedOutput
7
- def initialize
8
- EY::Serverside::LoggedOutput.logfile = tempfile.path
9
- EY::Serverside::LoggedOutput.verbose = true
10
- end
11
-
12
- def starting_time
13
- @starting_time ||= Time.now
14
- end
15
-
16
- def tempfile
17
- @tempfile ||= Tempfile.new('logged_output')
18
- end
19
- end
20
-
21
- describe EY::Serverside::LoggedOutput do
22
- before do
23
- EY::Serverside::LoggedOutput.enable_actual_info!
24
- @log_user = SampleLogUser.new
25
- end
26
-
27
- after do
28
- EY::Serverside::LoggedOutput.disable_actual_info!
29
- end
30
-
31
- it "has a timestamp before each line" do
32
- time1 = Time.local(2008, 9, 1, 12, 0, 0)
33
- time2 = Time.local(2008, 9, 1, 12, 3, 5)
34
- time3 = Time.local(2008, 9, 1, 12, 10, 25)
35
-
36
- Timecop.freeze(time1) do
37
- @log_user.debug('test1')
38
- @log_user.warning('test2')
39
- end
40
- Timecop.freeze(time2) do
41
- @log_user.info('test3')
42
-
43
- @log_user.debug("test11\ntest12\ntest13")
44
- @log_user.warning("test21\ntest22\ntest23")
45
- end
46
- Timecop.freeze(time3) do
47
- @log_user.info("test31\ntest32\ntest33")
48
- end
49
-
50
- timestamp_1 = "+ 0m 00s "
51
- timestamp_2 = "+ 3m 05s "
52
- timestamp_3 = "+10m 25s "
53
- File.read(@log_user.tempfile.path).should == "#{timestamp_1}test1\n#{timestamp_1}!> WARNING: test2\n\n#{timestamp_2}test3\n#{timestamp_2}test11\n#{timestamp_2}test12\n#{timestamp_2}test13\n#{timestamp_2}!> WARNING: test21\n#{timestamp_2}!> test22\n#{timestamp_2}!> test23\n\n#{timestamp_3}test31\n#{timestamp_3}test32\n#{timestamp_3}test33\n"
54
- end
55
- end