engineyard-serverside 1.6.5 → 1.7.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/engineyard-serverside.rb +2 -0
- data/lib/engineyard-serverside/cli.rb +83 -48
- data/lib/engineyard-serverside/configuration.rb +85 -18
- data/lib/engineyard-serverside/deploy.rb +105 -91
- data/lib/engineyard-serverside/deploy_hook.rb +22 -20
- data/lib/engineyard-serverside/deprecation.rb +9 -17
- data/lib/engineyard-serverside/future.rb +10 -4
- data/lib/engineyard-serverside/futures/celluloid.rb +3 -13
- data/lib/engineyard-serverside/futures/dataflow.rb +8 -13
- data/lib/engineyard-serverside/lockfile_parser.rb +1 -1
- data/lib/engineyard-serverside/rails_asset_support.rb +26 -10
- data/lib/engineyard-serverside/server.rb +17 -12
- data/lib/engineyard-serverside/shell.rb +98 -0
- data/lib/engineyard-serverside/shell/formatter.rb +71 -0
- data/lib/engineyard-serverside/shell/helpers.rb +29 -0
- data/lib/engineyard-serverside/strategies/git.rb +33 -63
- data/lib/engineyard-serverside/task.rb +34 -13
- data/lib/engineyard-serverside/version.rb +1 -1
- data/spec/basic_deploy_spec.rb +15 -50
- data/spec/bundler_deploy_spec.rb +3 -44
- data/spec/configuration_spec.rb +72 -0
- data/spec/custom_deploy_spec.rb +3 -4
- data/spec/deploy_hook_spec.rb +210 -162
- data/spec/deprecation_spec.rb +4 -26
- data/spec/ey_yml_customized_deploy_spec.rb +68 -0
- data/spec/fixtures/repos/assets_disabled/Gemfile +6 -0
- data/spec/fixtures/repos/assets_disabled/Gemfile.lock +90 -0
- data/spec/fixtures/repos/assets_disabled/README +1 -0
- data/spec/fixtures/repos/assets_disabled/Rakefile +5 -0
- data/spec/fixtures/repos/assets_disabled/config/application.rb +5 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +6 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +90 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +1 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +5 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +5 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +4 -0
- data/spec/fixtures/repos/assets_enabled/Gemfile +6 -0
- data/spec/fixtures/repos/assets_enabled/Gemfile.lock +90 -0
- data/spec/fixtures/repos/assets_enabled/README +1 -0
- data/spec/fixtures/repos/assets_enabled/Rakefile +5 -0
- data/spec/fixtures/repos/assets_enabled/config/application.rb +5 -0
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +1 -0
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +5 -0
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +4 -0
- data/spec/fixtures/repos/assets_in_hook/Gemfile +6 -0
- data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +90 -0
- data/spec/fixtures/repos/assets_in_hook/README +2 -0
- data/spec/fixtures/repos/assets_in_hook/Rakefile +5 -0
- data/spec/fixtures/repos/assets_in_hook/config/application.rb +5 -0
- data/spec/fixtures/repos/assets_in_hook/deploy/before_migrate.rb +1 -0
- data/spec/fixtures/repos/default/Gemfile +5 -0
- data/spec/fixtures/repos/default/Gemfile.lock +14 -0
- data/spec/fixtures/repos/default/README +5 -0
- data/spec/fixtures/repos/ey_yml/Gemfile +4 -0
- data/spec/fixtures/repos/ey_yml/Gemfile.lock +12 -0
- data/spec/fixtures/repos/ey_yml/README +1 -0
- data/spec/fixtures/repos/ey_yml/config/ey.yml +12 -0
- data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +6 -0
- data/spec/fixtures/repos/ey_yml_alt/Gemfile +4 -0
- data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +12 -0
- data/spec/fixtures/repos/ey_yml_alt/README +1 -0
- data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +6 -0
- data/spec/fixtures/repos/ey_yml_alt/ey.yml +12 -0
- data/spec/fixtures/repos/hook_fails/README +1 -0
- data/spec/fixtures/repos/hook_fails/deploy/before_migrate.rb +1 -0
- data/spec/fixtures/repos/hooks/README +1 -0
- data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/after_restart.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/before_restart.rb +1 -0
- data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +1 -0
- data/spec/fixtures/repos/no_ey_config/Gemfile +4 -0
- data/spec/fixtures/repos/no_ey_config/Gemfile.lock +12 -0
- data/spec/fixtures/repos/no_ey_config/README +1 -0
- data/spec/fixtures/repos/no_gemfile_lock/Gemfile +5 -0
- data/spec/fixtures/repos/no_gemfile_lock/README +1 -0
- data/spec/fixtures/repos/nodejs/README +1 -0
- data/spec/fixtures/repos/nodejs/package.json +7 -0
- data/spec/fixtures/repos/not_bundled/README +1 -0
- data/spec/fixtures/{gemfiles/1.0.21-rails-31-with-sqlite → repos/sqlite3/Gemfile} +0 -0
- data/spec/fixtures/{lockfiles/1.0.21-rails-31-with-sqlite → repos/sqlite3/Gemfile.lock} +0 -0
- data/spec/fixtures/repos/sqlite3/README +1 -0
- data/spec/git_strategy_spec.rb +11 -2
- data/spec/lockfile_parser_spec.rb +8 -3
- data/spec/nodejs_deploy_spec.rb +1 -26
- data/spec/rails31_deploy_spec.rb +23 -31
- data/spec/services_deploy_spec.rb +41 -100
- data/spec/shell_spec.rb +50 -0
- data/spec/spec_helper.rb +80 -66
- data/spec/sqlite3_deploy_spec.rb +10 -16
- data/spec/support/integration.rb +45 -139
- metadata +233 -78
- data/lib/engineyard-serverside/logged_output.rb +0 -91
- 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
|
data/spec/logged_output_spec.rb
DELETED
@@ -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
|