guard-unicorn 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module UnicornVersion
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
data/lib/guard/unicorn.rb CHANGED
@@ -6,6 +6,10 @@ require 'guard/unicorn/version'
6
6
  module Guard
7
7
  class Unicorn < Guard
8
8
 
9
+ # Sensible defaults for Rails projects
10
+ DEFAULT_PID_PATH = File.join("tmp", "pids", "unicorn.pid")
11
+ DEFAULT_CONFIG_PATH = File.join("config", "unicorn.rb")
12
+
9
13
  # Initialize a Guard.
10
14
  # @param [Array<Guard::Watcher>] watchers the Guard file watchers
11
15
  # @param [Hash] options the custom Guard options
@@ -15,10 +19,10 @@ module Guard
15
19
  watchers << Watcher.new( /^lib\/.+\.rb$/ )
16
20
  end
17
21
 
18
- @run_as_daemon = options.fetch(:daemonize, false)
19
-
20
- @pid_path = File.join("tmp", "pids", "unicorn.pid")
21
- @config_path = File.join("config", "unicorn.rb")
22
+ @run_as_daemon = options.fetch(:daemonize, false)
23
+ @enable_bundler = options.fetch(:bundler, true)
24
+ @pid_file = options.fetch(:pid_file, DEFAULT_PID_PATH)
25
+ @config_file = options.fetch(:config_file, DEFAULT_CONFIG_PATH)
22
26
 
23
27
  super
24
28
  end
@@ -26,23 +30,47 @@ module Guard
26
30
  # Call once when Guard starts. Please override initialize method to init stuff.
27
31
  # @raise [:task_has_failed] when start has failed
28
32
  def start
29
- info "Starting Unicorn..."
30
- start_unicorn
33
+ # Make sure unicorn is stopped
34
+ stop
35
+
36
+ cmd = []
37
+ cmd << "bundle exec" if @enable_bundler
38
+ cmd << "unicorn_rails"
39
+ cmd << "-c #{@config_file}"
40
+ cmd << "-D" if @run_as_daemon
41
+
42
+ @pid = Process.fork do
43
+ system "#{cmd.join " "}"
44
+ end
45
+
46
+ success "Unicorn started."
31
47
  end
32
48
 
33
49
  # Called when `stop|quit|exit|s|q|e + enter` is pressed (when Guard quits).
34
50
  # @raise [:task_has_failed] when stop has failed
35
51
  def stop
36
- info "Stopping Unicorn"
37
- stop_unicorn
52
+ return unless pid
53
+
54
+ begin
55
+ Process.kill("QUIT", pid) if Process.getpgid(pid)
56
+
57
+ # Unicorn won't always shut down right away, so we're waiting for
58
+ # the getpgid method to raise an Errno::ESRCH that will tell us
59
+ # the process is not longer active.
60
+ sleep 1 while Process.getpgid(pid)
61
+ success "Unicorn stopped."
62
+ rescue Errno::ESRCH
63
+ # Don't do anything, the process does not exist
64
+ end
38
65
  end
39
66
 
40
67
  # Called when `reload|r|z + enter` is pressed.
41
68
  # This method should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
42
69
  # @raise [:task_has_failed] when reload has failed
43
70
  def reload
44
- info "Reloading Unicorn"
45
- restart_unicorn
71
+ Process.kill "HUP", pid
72
+
73
+ success "Unicorn reloaded"
46
74
  end
47
75
 
48
76
  # Called when just `enter` is pressed
@@ -55,55 +83,22 @@ module Guard
55
83
  # @param [Array<String>] paths the changes files or paths
56
84
  # @raise [:task_has_failed] when run_on_change has failed
57
85
  def run_on_change(paths)
58
- restart_unicorn
86
+ reload
59
87
  end
60
88
 
61
89
  # Called on file(s) deletions that the Guard watches.
62
90
  # @param [Array<String>] paths the deleted files or paths
63
91
  # @raise [:task_has_failed] when run_on_change has failed
64
92
  def run_on_deletion(paths)
93
+ reload
65
94
  end
66
95
 
67
96
  private
68
- def start_unicorn
69
- # Make sure unicorn is stopped
70
- stop_unicorn
71
-
72
- cmd = []
73
- cmd << "unicorn_rails"
74
- cmd << "-c #{@config_path}"
75
- cmd << "-D" if daemonize?
76
-
77
- @pid = Process.fork do
78
- system "#{cmd.join " "}"
79
- info "Unicorn started."
80
- end
81
- end
82
-
83
- def restart_unicorn
84
- Process.kill "HUP", pid
85
- end
86
-
87
- def stop_unicorn
88
- return unless pid
89
-
90
- begin
91
- Process.kill("QUIT", pid) if Process.getpgid(pid)
92
-
93
- # Unicorn won't always shut down right away, so we're waiting for
94
- # the getpgid method to raise an Errno::ESRCH that will tell us
95
- # the process is not longer active.
96
- sleep 1 while Process.getpgid(pid)
97
- rescue Errno::ESRCH
98
- # Don't do anything, the process does not exist
99
- end
100
- end
101
-
102
97
  def pid
103
98
  # Favor the pid in the pidfile, since some processes
104
99
  # might daemonize properly and fork twice.
105
- if File.exists?(@pid_path)
106
- @pid = File.open(@pid_path) { |f| f.gets.to_i }
100
+ if File.exists?(@pid_file)
101
+ @pid = File.open(@pid_file) { |f| f.gets.to_i }
107
102
  end
108
103
 
109
104
  @pid
@@ -113,8 +108,20 @@ module Guard
113
108
  UI.info(msg)
114
109
  end
115
110
 
116
- def daemonize?
117
- @run_as_daemon
111
+ def pending message
112
+ notify message, :image => :pending
113
+ end
114
+
115
+ def success message
116
+ notify message, :image => :success
117
+ end
118
+
119
+ def failed message
120
+ notify message, :image => :failed
121
+ end
122
+
123
+ def notify(message, options = {})
124
+ Notifier.notify(message, options)
118
125
  end
119
126
  end
120
127
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-unicorn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
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-03-03 00:00:00.000000000 Z
12
+ date: 2012-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard
16
- requirement: &70253598121000 !ruby/object:Gem::Requirement
16
+ requirement: &70274208930740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70253598121000
24
+ version_requirements: *70274208930740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70253598120540 !ruby/object:Gem::Requirement
27
+ requirement: &70274208930260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70253598120540
35
+ version_requirements: *70274208930260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70253598119960 !ruby/object:Gem::Requirement
38
+ requirement: &70274208929700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70253598119960
46
+ version_requirements: *70274208929700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
- requirement: &70253598119420 !ruby/object:Gem::Requirement
49
+ requirement: &70274208929180 !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: *70253598119420
57
+ version_requirements: *70274208929180
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard
60
- requirement: &70253598118920 !ruby/object:Gem::Requirement
60
+ requirement: &70274208928640 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70253598118920
68
+ version_requirements: *70274208928640
69
69
  description: Guard plug-in that allows you to restart Unicorn
70
70
  email:
71
71
  - andrei@andreimaxim.ro