service_manager 0.6.2 → 0.6.3
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.
- data/lib/service_manager/service.rb +11 -6
- metadata +52 -70
@@ -4,7 +4,7 @@ class ServiceManager::Service
|
|
4
4
|
CHDIR_SEMAPHORE = Mutex.new
|
5
5
|
ANSI_COLOR_RESET = 0
|
6
6
|
|
7
|
-
attr_accessor :name, :host, :port, :cwd, :reload_uri, :start_cmd, :process, :loaded_cue, :timeout, :color, :pid_file
|
7
|
+
attr_accessor :name, :host, :port, :cwd, :reload_uri, :start_cmd, :process, :loaded_cue, :timeout, :color, :pid_file, :manage_pid_file
|
8
8
|
|
9
9
|
class ServiceDidntStart < Exception; end
|
10
10
|
|
@@ -53,8 +53,8 @@ class ServiceManager::Service
|
|
53
53
|
return false
|
54
54
|
end
|
55
55
|
|
56
|
-
puts "Starting #{colorized_service_name} in #{cwd} with '#{start_cmd}'"
|
57
56
|
CHDIR_SEMAPHORE.synchronize do
|
57
|
+
puts "Starting #{colorized_service_name} in #{cwd} with '#{start_cmd}'\n"
|
58
58
|
Dir.chdir(cwd) do
|
59
59
|
without_bundler_env do
|
60
60
|
# system("bash -c set")
|
@@ -65,6 +65,7 @@ class ServiceManager::Service
|
|
65
65
|
at_exit { stop }
|
66
66
|
wait
|
67
67
|
puts "Server #{colorized_service_name} is up."
|
68
|
+
File.open(pid_file, "wb") { |f| f << process.pid } if manage_pid_file
|
68
69
|
end
|
69
70
|
|
70
71
|
# stop the service. If we didn't start it, do nothing.
|
@@ -79,6 +80,7 @@ class ServiceManager::Service
|
|
79
80
|
end
|
80
81
|
puts "Server #{colorized_service_name} (#{process.pid}) is shut down"
|
81
82
|
self.process = nil
|
83
|
+
FileUtils.rm(pid_file) if manage_pid_file && File.exist?(pid_file)
|
82
84
|
true
|
83
85
|
end
|
84
86
|
|
@@ -93,10 +95,12 @@ class ServiceManager::Service
|
|
93
95
|
|
94
96
|
# detects if the service is running on the configured host and port (will return true if we weren't the ones who started it)
|
95
97
|
def running?
|
96
|
-
|
98
|
+
case
|
99
|
+
when pid_file
|
97
100
|
running_via_pid_file?
|
98
|
-
|
99
|
-
TCPSocket.listening_service?(:port => port, :host => host)
|
101
|
+
when port
|
102
|
+
TCPSocket.listening_service?(:port => port, :host => host || "127.0.0.1")
|
103
|
+
else raise "Service Manager needs to be able to tell if the service is already running or not. You'll need to specify a pid file or a TCP port to check."
|
100
104
|
end
|
101
105
|
end
|
102
106
|
|
@@ -109,7 +113,8 @@ protected
|
|
109
113
|
end
|
110
114
|
|
111
115
|
def colorize(output)
|
112
|
-
|
116
|
+
no_color = output.gsub(/\e\[(\d*\;|)\d*m\d*/, "")
|
117
|
+
"\e[0;#{color}m#{no_color}\e[0;#{ANSI_COLOR_RESET}m"
|
113
118
|
end
|
114
119
|
|
115
120
|
def colorized_service_name
|
metadata
CHANGED
@@ -1,106 +1,88 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: service_manager
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 6
|
9
|
-
- 2
|
10
|
-
version: 0.6.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Tim Harper
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-01-05 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: background_process
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2168700740 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 2
|
33
|
-
version: "1.2"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.2'
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: tcpsocket-wait
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: *2168700740
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: tcpsocket-wait
|
27
|
+
requirement: &2168700340 !ruby/object:Gem::Requirement
|
40
28
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
48
33
|
type: :runtime
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2168700340
|
36
|
+
description: ! 'It launches and interacts with a set of services from a single terminal
|
37
|
+
window.
|
38
|
+
|
39
|
+
|
53
40
|
* Colorizes output for each process to help distinguish them.
|
54
|
-
* Useful for integration-test applications where you need to start up several processes and test them all.
|
55
|
-
* Built because servolux wasn't working very well for me.
|
56
|
-
* Can detect exactly when a service is successfully launched by watching the output of the process.
|
57
41
|
|
58
|
-
|
42
|
+
* Useful for integration-test applications where you need to start up several processes
|
43
|
+
and test them all.
|
44
|
+
|
45
|
+
* Built because servolux wasn''t working very well for me.
|
46
|
+
|
47
|
+
* Can detect exactly when a service is successfully launched by watching the output
|
48
|
+
of the process.
|
49
|
+
|
50
|
+
'
|
51
|
+
email:
|
59
52
|
- tim@leadtune.com
|
60
|
-
executables:
|
53
|
+
executables:
|
61
54
|
- start_services
|
62
55
|
extensions: []
|
63
|
-
|
64
|
-
extra_rdoc_files:
|
56
|
+
extra_rdoc_files:
|
65
57
|
- MIT-LICENSE
|
66
|
-
files:
|
58
|
+
files:
|
67
59
|
- MIT-LICENSE
|
68
60
|
- lib/service_manager/service.rb
|
69
61
|
- lib/service_manager.rb
|
70
62
|
- bin/start_services
|
71
|
-
has_rdoc: true
|
72
63
|
homepage: http://github.com/leadtune/service_manager
|
73
64
|
licenses: []
|
74
|
-
|
75
65
|
post_install_message:
|
76
66
|
rdoc_options: []
|
77
|
-
|
78
|
-
require_paths:
|
67
|
+
require_paths:
|
79
68
|
- lib
|
80
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
70
|
none: false
|
82
|
-
requirements:
|
83
|
-
- -
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
|
86
|
-
|
87
|
-
- 0
|
88
|
-
version: "0"
|
89
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
76
|
none: false
|
91
|
-
requirements:
|
92
|
-
- -
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
|
95
|
-
segments:
|
96
|
-
- 0
|
97
|
-
version: "0"
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
98
81
|
requirements: []
|
99
|
-
|
100
82
|
rubyforge_project:
|
101
|
-
rubygems_version: 1.
|
83
|
+
rubygems_version: 1.8.7
|
102
84
|
signing_key:
|
103
85
|
specification_version: 3
|
104
86
|
summary: service_manager
|
105
87
|
test_files: []
|
106
|
-
|
88
|
+
has_rdoc:
|