guard-process 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -34,14 +34,24 @@ The following options are available:
34
34
  The directory in which you want to run the command, if none is given then Ruby's current working directory is used
35
35
  - stop_signal
36
36
  The signal that Guard::Process sends to terminate the process when it needs to stop/restart it. This defaults to 'TERM' (in some cases you may need KILL).
37
+ - dont_stop
38
+ When a reload is triggered this will not stop the process, instead it will wait for the current process run to finish before starting a new one. This is useful for having guard-process execute commands that don't run constantly that you don't want to interrupt as they run.
37
39
  - env
38
40
  A Hash with environmental variables to set for the context where your command runs, like so:
39
41
  ``` ruby
40
42
  {"SSL_CERTS_DIR" => "/etc/ssl/certs", "JAVA_HOME" => "/usr/local/java"}
41
43
  ```
42
44
 
45
+ # TODO
46
+
47
+ Clean up the test cases
48
+
43
49
  # Changes
44
50
 
51
+ ## 1.0.5
52
+
53
+ - Adds the dont_stop option
54
+
45
55
  ## 1.0.4
46
56
 
47
57
  - Adds the dir option
@@ -4,7 +4,7 @@ require 'rbconfig' unless defined?(RbConfig)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "guard-process"
7
- s.version = "1.0.4"
7
+ s.version = "1.0.5"
8
8
  s.authors = ["Mark Kremer"]
9
9
  s.email = ["mark@socialreferral.com"]
10
10
  s.homepage = ""
data/lib/guard/process.rb CHANGED
@@ -11,9 +11,14 @@ module Guard
11
11
  @name = options[:name]
12
12
  @dir = options[:dir] || Dir.getwd
13
13
  @stop_signal = options[:stop_signal] || "TERM"
14
+ @dont_stop = options[:dont_stop]
14
15
  super
15
16
  end
16
17
 
18
+ def wait_for_stop?
19
+ @dont_stop
20
+ end
21
+
17
22
  def process_running?
18
23
  begin
19
24
  @pid ? ::Process.kill(0, @pid) : false
@@ -48,8 +53,20 @@ module Guard
48
53
  end
49
54
  end
50
55
 
56
+ def wait_for_stop
57
+ if @pid
58
+ UI.info("Process #{@name} is still running...")
59
+ ::Process.waitpid(@pid) rescue Errno::ESRCH
60
+ UI.info("Process #{@name} has stopped!")
61
+ end
62
+ end
63
+
51
64
  def reload
52
- stop
65
+ if wait_for_stop?
66
+ wait_for_stop
67
+ else
68
+ stop
69
+ end
53
70
  start
54
71
  end
55
72
 
@@ -11,7 +11,13 @@ class GuardProcessTest < MiniTest::Unit::TestCase
11
11
  end
12
12
 
13
13
  def teardown
14
- @guard.stop if @guard.process_running?
14
+ if @guard.process_running?
15
+ if @guard.wait_for_stop?
16
+ @guard.wait_for_stop
17
+ else
18
+ @guard.stop
19
+ end
20
+ end
15
21
  ENV['GUARD_ENV'] = nil
16
22
  end
17
23
 
@@ -36,10 +42,21 @@ class GuardProcessTest < MiniTest::Unit::TestCase
36
42
  end
37
43
 
38
44
  def test_reload_stops_and_starts_command
45
+ @guard.expects(:wait_for_stop).never
46
+ @guard.expects(:stop)
47
+ @guard.expects(:start).twice
48
+ @guard.start
49
+ @guard.reload
50
+ end
51
+
52
+ def test_reload_waits_for_command_to_finish_before_starting_again_if_dont_stop_option_set
53
+ @options = {:command => "ruby #{TEST_ROOT}/run_2_seconds.rb", :name => '2Seconds', :dont_stop => true}
54
+ @guard = Guard::Process.new([], @options)
55
+ @guard.expects(:wait_for_stop).at_least_once
56
+ @guard.expects(:stop).never
57
+ @guard.expects(:start).twice
39
58
  @guard.start
40
- assert @guard.process_running?
41
59
  @guard.reload
42
- assert @guard.process_running?
43
60
  end
44
61
 
45
62
  def test_start_sets_env_properly
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ puts "Running this program for 2 seconds"
4
+ sleep 1
5
+ puts "One more second to go!"
6
+ sleep 1
7
+ puts "Done!"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-process
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-14 00:00:00.000000000 Z
12
+ date: 2012-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard
16
- requirement: &84583090 !ruby/object:Gem::Requirement
16
+ requirement: &70332760 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.4.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *84583090
24
+ version_requirements: *70332760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: spoon
27
- requirement: &84582790 !ruby/object:Gem::Requirement
27
+ requirement: &70332000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.0.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *84582790
35
+ version_requirements: *70332000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: ffi
38
- requirement: &84582530 !ruby/object:Gem::Requirement
38
+ requirement: &70331270 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.9
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *84582530
46
+ version_requirements: *70331270
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
- requirement: &84582280 !ruby/object:Gem::Requirement
49
+ requirement: &70330970 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *84582280
57
+ version_requirements: *70330970
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mocha
60
- requirement: &84581940 !ruby/object:Gem::Requirement
60
+ requirement: &70330670 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *84581940
68
+ version_requirements: *70330670
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-minitest
71
- requirement: &84581720 !ruby/object:Gem::Requirement
71
+ requirement: &70330400 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *84581720
79
+ version_requirements: *70330400
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: guard-bundler
82
- requirement: &84581500 !ruby/object:Gem::Requirement
82
+ requirement: &70330070 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *84581500
90
+ version_requirements: *70330070
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rake
93
- requirement: &84581230 !ruby/object:Gem::Requirement
93
+ requirement: &70329710 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *84581230
101
+ version_requirements: *70329710
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rb-inotify
104
- requirement: &84580980 !ruby/object:Gem::Requirement
104
+ requirement: &70329420 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *84580980
112
+ version_requirements: *70329420
113
113
  description: Guard extension to run cli processes
114
114
  email:
115
115
  - mark@socialreferral.com
@@ -129,6 +129,7 @@ files:
129
129
  - lib/guard/process.rb
130
130
  - lib/guard/process/templates/Guardfile
131
131
  - test/guard/process_test.rb
132
+ - test/run_2_seconds.rb
132
133
  - test/run_me.rb
133
134
  - test/test_helper.rb
134
135
  - vagrant-provision
@@ -150,9 +151,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
151
  - - ! '>='
151
152
  - !ruby/object:Gem::Version
152
153
  version: '0'
153
- segments:
154
- - 0
155
- hash: 1062270739
156
154
  requirements: []
157
155
  rubyforge_project:
158
156
  rubygems_version: 1.8.11