engineyard-serverside 1.5.25 → 1.5.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -377,6 +377,10 @@ Deploy again if your services configuration appears incomplete or out of date.
377
377
 
378
378
  protected
379
379
 
380
+ def starting_time
381
+ @starting_time ||= Time.now
382
+ end
383
+
380
384
  def gemfile?
381
385
  File.exist?("#{c.release_path}/Gemfile")
382
386
  end
@@ -42,18 +42,18 @@ module EY
42
42
  end
43
43
 
44
44
  def warning(msg)
45
- info "\nWARNING: #{msg}\n".gsub(/^/,'!> ')
45
+ info "WARNING: #{msg}\n".gsub(/^/,'!> ')
46
46
  end
47
47
 
48
48
  def info(msg)
49
49
  with_logfile do |log|
50
- Tee.new($stdout, log) << (msg + "\n")
50
+ Tee.new($stdout, log) << ("#{with_timestamp(msg)}\n")
51
51
  end
52
52
  end
53
53
 
54
54
  def debug(msg)
55
55
  with_logfile do |log|
56
- log << "#{msg}\n"
56
+ log << "#{with_timestamp(msg)}\n"
57
57
  end
58
58
  end
59
59
 
@@ -62,7 +62,7 @@ module EY
62
62
  out = verbose? ? Tee.new($stdout, log) : log
63
63
  err = Tee.new($stderr, log) # we always want to see errors
64
64
 
65
- out << ":: running #{cmd}\n"
65
+ out << with_timestamp(":: running #{cmd}\n")
66
66
 
67
67
  # :quiet means don't raise an error on nonzero exit status
68
68
  status = Open4.spawn cmd, 0 => '', 1 => out, 2 => err, :quiet => true
@@ -79,6 +79,12 @@ module EY
79
79
  EY::Serverside::LoggedOutput.logfile
80
80
  end
81
81
 
82
+ def with_timestamp(msg)
83
+ return msg unless respond_to?(:starting_time)
84
+ time_passed = Time.now.to_i - starting_time.to_i
85
+ timestamp = "+%2dm %02ds " % time_passed.divmod(60)
86
+ msg.gsub(/^/, timestamp)
87
+ end
82
88
  end
83
89
  end
84
90
  end
@@ -1,5 +1,5 @@
1
1
  module EY
2
2
  module Serverside
3
- VERSION = '1.5.25'
3
+ VERSION = '1.5.26'
4
4
  end
5
5
  end
@@ -0,0 +1,55 @@
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
data/spec/spec_helper.rb CHANGED
@@ -18,7 +18,24 @@ module EY
18
18
  end
19
19
 
20
20
  module LoggedOutput
21
- def info(_) end
21
+ def self.enable_actual_info!
22
+ @use_actual_info = true
23
+ end
24
+
25
+ def self.disable_actual_info!
26
+ @use_actual_info = false
27
+ end
28
+
29
+ def self.use_actual_info?
30
+ @use_actual_info
31
+ end
32
+
33
+ alias old_info info
34
+ def info(*args)
35
+ if EY::Serverside::LoggedOutput.use_actual_info?
36
+ old_info(*args)
37
+ end
38
+ end
22
39
 
23
40
  def logged_system(cmd)
24
41
  output = `#{cmd} 2>&1`
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard-serverside
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
4
+ hash: 55
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 5
9
- - 25
10
- version: 1.5.25
9
+ - 26
10
+ version: 1.5.26
11
11
  platform: ruby
12
12
  authors:
13
13
  - EY Cloud Team
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-13 00:00:00 Z
18
+ date: 2012-01-21 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -64,6 +64,20 @@ dependencies:
64
64
  type: :development
65
65
  prerelease: false
66
66
  name: rdoc
67
+ - !ruby/object:Gem::Dependency
68
+ version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ requirement: *id004
78
+ type: :development
79
+ prerelease: false
80
+ name: timecop
67
81
  description:
68
82
  email: cloud@engineyard.com
69
83
  executables:
@@ -284,7 +298,6 @@ files:
284
298
  - spec/custom_deploy_spec.rb
285
299
  - spec/deploy_hook_spec.rb
286
300
  - spec/deprecation_spec.rb
287
- - spec/fixtures/gitrepo/bar
288
301
  - spec/fixtures/gitrepo/foo
289
302
  - spec/fixtures/gitrepo.tar.gz
290
303
  - spec/fixtures/invalid_hook.rb
@@ -304,6 +317,7 @@ files:
304
317
  - spec/fixtures/valid_hook.rb
305
318
  - spec/git_strategy_spec.rb
306
319
  - spec/lockfile_parser_spec.rb
320
+ - spec/logged_output_spec.rb
307
321
  - spec/nodejs_deploy_spec.rb
308
322
  - spec/rails31_deploy_spec.rb
309
323
  - spec/restart_spec.rb
@@ -352,7 +366,6 @@ test_files:
352
366
  - spec/custom_deploy_spec.rb
353
367
  - spec/deploy_hook_spec.rb
354
368
  - spec/deprecation_spec.rb
355
- - spec/fixtures/gitrepo/bar
356
369
  - spec/fixtures/gitrepo/foo
357
370
  - spec/fixtures/gitrepo.tar.gz
358
371
  - spec/fixtures/invalid_hook.rb
@@ -372,6 +385,7 @@ test_files:
372
385
  - spec/fixtures/valid_hook.rb
373
386
  - spec/git_strategy_spec.rb
374
387
  - spec/lockfile_parser_spec.rb
388
+ - spec/logged_output_spec.rb
375
389
  - spec/nodejs_deploy_spec.rb
376
390
  - spec/rails31_deploy_spec.rb
377
391
  - spec/restart_spec.rb
File without changes