mongrel_config 0.2.1 → 0.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.
Files changed (79) hide show
  1. data/Rakefile +3 -4
  2. data/doc/rdoc/classes/ConfigTool.html +174 -0
  3. data/doc/rdoc/classes/ConfigTool.src/M000001.html +33 -0
  4. data/doc/rdoc/classes/ConfigTool.src/M000002.html +28 -0
  5. data/doc/rdoc/classes/ConfigTool.src/M000003.html +45 -0
  6. data/doc/rdoc/classes/Configure/Controllers/ClearLogs.html +137 -0
  7. data/doc/rdoc/classes/Configure/Controllers/ClearLogs.src/M000043.html +21 -0
  8. data/doc/rdoc/classes/Configure/Controllers/Delete.html +137 -0
  9. data/doc/rdoc/classes/Configure/Controllers/Delete.src/M000036.html +20 -0
  10. data/doc/rdoc/classes/Configure/Controllers/Index.html +156 -0
  11. data/doc/rdoc/classes/Configure/Controllers/Index.src/M000027.html +18 -0
  12. data/doc/rdoc/classes/Configure/Controllers/Index.src/M000028.html +19 -0
  13. data/doc/rdoc/classes/Configure/Controllers/Info.html +137 -0
  14. data/doc/rdoc/classes/Configure/Controllers/Info.src/M000035.html +19 -0
  15. data/doc/rdoc/classes/Configure/Controllers/Install.html +182 -0
  16. data/doc/rdoc/classes/Configure/Controllers/Install.src/M000039.html +18 -0
  17. data/doc/rdoc/classes/Configure/Controllers/Install.src/M000040.html +43 -0
  18. data/doc/rdoc/classes/Configure/Controllers/Install.src/M000041.html +18 -0
  19. data/doc/rdoc/classes/Configure/Controllers/Install.src/M000042.html +18 -0
  20. data/doc/rdoc/classes/Configure/Controllers/Kill.html +137 -0
  21. data/doc/rdoc/classes/Configure/Controllers/Kill.src/M000029.html +32 -0
  22. data/doc/rdoc/classes/Configure/Controllers/Logs.html +162 -0
  23. data/doc/rdoc/classes/Configure/Controllers/Logs.src/M000037.html +19 -0
  24. data/doc/rdoc/classes/Configure/Controllers/Logs.src/M000038.html +18 -0
  25. data/doc/rdoc/classes/Configure/Controllers/Start.html +171 -0
  26. data/doc/rdoc/classes/Configure/Controllers/Start.src/M000032.html +18 -0
  27. data/doc/rdoc/classes/Configure/Controllers/Start.src/M000033.html +19 -0
  28. data/doc/rdoc/classes/Configure/Controllers/Start.src/M000034.html +27 -0
  29. data/doc/rdoc/classes/Configure/Controllers/Stop.html +156 -0
  30. data/doc/rdoc/classes/Configure/Controllers/Stop.src/M000030.html +18 -0
  31. data/doc/rdoc/classes/Configure/Controllers/Stop.src/M000031.html +26 -0
  32. data/doc/rdoc/classes/Configure/Controllers.html +123 -0
  33. data/doc/rdoc/classes/Configure/Views.html +360 -0
  34. data/doc/rdoc/classes/Configure/Views.src/M000011.html +24 -0
  35. data/doc/rdoc/classes/Configure/Views.src/M000012.html +25 -0
  36. data/doc/rdoc/classes/Configure/Views.src/M000013.html +26 -0
  37. data/doc/rdoc/classes/Configure/Views.src/M000014.html +20 -0
  38. data/doc/rdoc/classes/Configure/Views.src/M000015.html +31 -0
  39. data/doc/rdoc/classes/Configure/Views.src/M000016.html +27 -0
  40. data/doc/rdoc/classes/Configure/Views.src/M000017.html +32 -0
  41. data/doc/rdoc/classes/Configure/Views.src/M000018.html +18 -0
  42. data/doc/rdoc/classes/Configure/Views.src/M000019.html +18 -0
  43. data/doc/rdoc/classes/Configure/Views.src/M000020.html +29 -0
  44. data/doc/rdoc/classes/Configure/Views.src/M000021.html +42 -0
  45. data/doc/rdoc/classes/Configure/Views.src/M000022.html +34 -0
  46. data/doc/rdoc/classes/Configure/Views.src/M000023.html +25 -0
  47. data/doc/rdoc/classes/Configure/Views.src/M000024.html +35 -0
  48. data/doc/rdoc/classes/Configure/Views.src/M000025.html +23 -0
  49. data/doc/rdoc/classes/Configure/Views.src/M000026.html +20 -0
  50. data/doc/rdoc/classes/Configure.html +112 -0
  51. data/doc/rdoc/classes/W32Support.html +258 -0
  52. data/doc/rdoc/classes/W32Support.src/M000004.html +18 -0
  53. data/doc/rdoc/classes/W32Support.src/M000005.html +18 -0
  54. data/doc/rdoc/classes/W32Support.src/M000006.html +33 -0
  55. data/doc/rdoc/classes/W32Support.src/M000007.html +20 -0
  56. data/doc/rdoc/classes/W32Support.src/M000008.html +20 -0
  57. data/doc/rdoc/classes/W32Support.src/M000009.html +18 -0
  58. data/doc/rdoc/classes/W32Support.src/M000010.html +28 -0
  59. data/doc/rdoc/created.rid +1 -0
  60. data/doc/rdoc/files/COPYING.html +756 -0
  61. data/doc/rdoc/files/LICENSE.html +756 -0
  62. data/doc/rdoc/files/README.html +110 -0
  63. data/doc/rdoc/files/lib/mongrel_config/app_rb.html +110 -0
  64. data/doc/rdoc/files/lib/mongrel_config/init_rb.html +112 -0
  65. data/doc/rdoc/files/lib/mongrel_config/win32_app_rb.html +113 -0
  66. data/doc/rdoc/files/lib/mongrel_config/win32_rb.html +108 -0
  67. data/doc/rdoc/fr_class_index.html +40 -0
  68. data/doc/rdoc/fr_file_index.html +33 -0
  69. data/doc/rdoc/fr_method_index.html +69 -0
  70. data/doc/rdoc/index.html +24 -0
  71. data/doc/rdoc/rdoc-style.css +208 -0
  72. data/lib/mongrel_config/init.rb +32 -15
  73. data/lib/mongrel_config/win32.rb +85 -0
  74. data/lib/mongrel_config/win32_app.rb +251 -0
  75. data/resources/index_win32.html +68 -0
  76. data/resources/style.css +6 -1
  77. data/test/test_config.rb +48 -2
  78. data/tools/rakehelp.rb +2 -1
  79. metadata +95 -4
@@ -0,0 +1,69 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Methods
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Methods</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Methods</h1>
22
+ <div id="index-entries">
23
+ <a href="classes/Configure/Views.html#M000019">_pid (Configure::Views)</a><br />
24
+ <a href="classes/Configure/Views.html#M000018">_running? (Configure::Views)</a><br />
25
+ <a href="classes/Configure/Views.html#M000026">_running_procs (Configure::Views)</a><br />
26
+ <a href="classes/Configure/Controllers/Install.html#M000042">bad? (Configure::Controllers::Install)</a><br />
27
+ <a href="classes/ConfigTool.html#M000001">configure (ConfigTool)</a><br />
28
+ <a href="classes/W32Support.html#M000010">delete (W32Support)</a><br />
29
+ <a href="classes/W32Support.html#M000005">display (W32Support)</a><br />
30
+ <a href="classes/W32Support.html#M000006">do_and_wait (W32Support)</a><br />
31
+ <a href="classes/Configure/Controllers/Stop.html#M000031">get (Configure::Controllers::Stop)</a><br />
32
+ <a href="classes/Configure/Controllers/Delete.html#M000036">get (Configure::Controllers::Delete)</a><br />
33
+ <a href="classes/Configure/Controllers/Logs.html#M000037">get (Configure::Controllers::Logs)</a><br />
34
+ <a href="classes/Configure/Controllers/Start.html#M000032">get (Configure::Controllers::Start)</a><br />
35
+ <a href="classes/Configure/Controllers/Info.html#M000035">get (Configure::Controllers::Info)</a><br />
36
+ <a href="classes/Configure/Controllers/Stop.html#M000030">get (Configure::Controllers::Stop)</a><br />
37
+ <a href="classes/Configure/Controllers/Kill.html#M000029">get (Configure::Controllers::Kill)</a><br />
38
+ <a href="classes/Configure/Controllers/Index.html#M000028">get (Configure::Controllers::Index)</a><br />
39
+ <a href="classes/Configure/Controllers/Index.html#M000027">get (Configure::Controllers::Index)</a><br />
40
+ <a href="classes/Configure/Controllers/Logs.html#M000038">get (Configure::Controllers::Logs)</a><br />
41
+ <a href="classes/Configure/Controllers/Install.html#M000039">get (Configure::Controllers::Install)</a><br />
42
+ <a href="classes/Configure/Controllers/Start.html#M000034">get (Configure::Controllers::Start)</a><br />
43
+ <a href="classes/Configure/Controllers/ClearLogs.html#M000043">get (Configure::Controllers::ClearLogs)</a><br />
44
+ <a href="classes/Configure/Controllers/Install.html#M000041">good? (Configure::Controllers::Install)</a><br />
45
+ <a href="classes/Configure/Views.html#M000022">info (Configure::Views)</a><br />
46
+ <a href="classes/Configure/Views.html#M000024">install_form (Configure::Views)</a><br />
47
+ <a href="classes/Configure/Views.html#M000025">install_result (Configure::Views)</a><br />
48
+ <a href="classes/Configure/Views.html#M000015">kill (Configure::Views)</a><br />
49
+ <a href="classes/Configure/Views.html#M000020">layout (Configure::Views)</a><br />
50
+ <a href="classes/Configure/Views.html#M000011">layout (Configure::Views)</a><br />
51
+ <a href="classes/W32Support.html#M000004">list (W32Support)</a><br />
52
+ <a href="classes/Configure/Views.html#M000021">list (Configure::Views)</a><br />
53
+ <a href="classes/Configure/Views.html#M000017">logs (Configure::Views)</a><br />
54
+ <a href="classes/Configure/Controllers/Install.html#M000040">post (Configure::Controllers::Install)</a><br />
55
+ <a href="classes/Configure/Controllers/Start.html#M000033">post (Configure::Controllers::Start)</a><br />
56
+ <a href="classes/ConfigTool.html#M000003">run (ConfigTool)</a><br />
57
+ <a href="classes/Configure/Views.html#M000023">service_logs (Configure::Views)</a><br />
58
+ <a href="classes/Configure/Views.html#M000012">show (Configure::Views)</a><br />
59
+ <a href="classes/W32Support.html#M000007">start (W32Support)</a><br />
60
+ <a href="classes/Configure/Views.html#M000013">start (Configure::Views)</a><br />
61
+ <a href="classes/Configure/Views.html#M000014">start_done (Configure::Views)</a><br />
62
+ <a href="classes/W32Support.html#M000009">status (W32Support)</a><br />
63
+ <a href="classes/Configure/Views.html#M000016">stop (Configure::Views)</a><br />
64
+ <a href="classes/W32Support.html#M000008">stop (W32Support)</a><br />
65
+ <a href="classes/ConfigTool.html#M000002">validate (ConfigTool)</a><br />
66
+ </div>
67
+ </div>
68
+ </body>
69
+ </html>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ RDoc Documentation
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>RDoc Documentation</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/README.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'gem_plugin'
2
3
  require 'mongrel'
3
4
 
@@ -6,23 +7,34 @@ class ConfigTool < GemPlugin::Plugin "/commands"
6
7
  include Mongrel::Command::Base
7
8
 
8
9
  def configure
9
- options [
10
- ['-c', '--chdir PATH', "Change to dir before starting (will be expanded)", :@cwd, Dir.pwd],
11
- ['-P', '--pid FILE', "Where to write the PID", :@pid_file, "log/mongrel.pid"],
12
- ['-h', '--host ADDR', "Host to bind to for server", :@host, "0.0.0.0"],
13
- ['-p', '--port NUMBER', "Port to bind to", :@port, "3001"],
14
- ['-u', '--uri URI', "Where to put your config tool", :@uri, "/config"]
15
- ]
10
+ if RUBY_PLATFORM =~ /mswin/
11
+ options [
12
+ ['-h', '--host ADDR', "Host to bind to for server", :@host, "0.0.0.0"],
13
+ ['-p', '--port NUMBER', "Port to bind to", :@port, "3001"],
14
+ ['-u', '--uri URI', "Where to put your config tool", :@uri, "/config"],
15
+ ['-R', '--mongrel PATH', "Path to mongrel_rails_service", :@mongrel_script, "c:\\ruby\\bin\\mongrel_rails_service"]
16
+ ]
17
+ else
18
+ options [
19
+ ['-c', '--chdir PATH', "Change to dir before starting (will be expanded)", :@cwd, Dir.pwd],
20
+ ['-P', '--pid FILE', "Where to write the PID", :@pid_file, "log/mongrel.pid"],
21
+ ['-h', '--host ADDR', "Host to bind to for server", :@host, "0.0.0.0"],
22
+ ['-p', '--port NUMBER', "Port to bind to", :@port, "3001"],
23
+ ['-u', '--uri URI', "Where to put your config tool", :@uri, "/config"]
24
+ ]
25
+ end
16
26
  end
17
27
 
18
28
  def validate
19
- valid?(@uri, "Must give a uri")
20
- valid?(@port && @port.to_i > 0, "Must give a valid port")
21
- valid?(@host, "Host IP to bind must be given")
22
-
23
- valid_dir? @cwd, "Cannot change to a directory that doesn't exist"
24
- Dir.chdir @cwd
25
- valid_dir? "log", "Log directory does not exist"
29
+ valid?(@uri, "Must give a uri")
30
+ valid?(@port && @port.to_i > 0, "Must give a valid port")
31
+ valid?(@host, "Host IP to bind must be given")
32
+
33
+ if RUBY_PLATFORM !~ /mswin/
34
+ valid_dir? @cwd, "Cannot change to a directory that doesn't exist"
35
+ Dir.chdir @cwd
36
+ valid_dir? "log", "Log directory does not exist"
37
+ end
26
38
 
27
39
  return @valid
28
40
  end
@@ -30,7 +42,12 @@ class ConfigTool < GemPlugin::Plugin "/commands"
30
42
 
31
43
  def run
32
44
  # must require this here since rails and camping don't like eachother
33
- require 'mongrel_config/app'
45
+ if RUBY_PLATFORM =~ /mswin/
46
+ require 'mongrel_config/win32_app'
47
+ $mongrel_rails_service = @mongrel_script
48
+ else
49
+ require 'mongrel_config/app'
50
+ end
34
51
 
35
52
  resources = GemPlugin::Manager.instance.resource "mongrel_config", "/"
36
53
  $PID_FILE = @pid_file
@@ -0,0 +1,85 @@
1
+ require 'win32/service'
2
+
3
+
4
+ # Simply abstracts the common stuff that the config tool needs to do
5
+ # when dealing with Win32. It is a very thin wrapper which may expand
6
+ # later.
7
+ module W32Support
8
+
9
+ # Lists all of the services that have "mongrel" in the binary_path_name
10
+ # of the service. This detects the mongrel services.
11
+ def W32Support.list
12
+ Win32::Service.services.select {|s| s.binary_path_name =~ /mongrel/ }
13
+ end
14
+
15
+ # Just gets the display name of the service.
16
+ def W32Support.display(name)
17
+ Win32::Service.getdisplayname(name)
18
+ end
19
+
20
+ # Performs one operations (like :start or :start) which need
21
+ # to be "monitored" until they're done. The wait_for parameter
22
+ # should be a regex for the content of the status like /running/
23
+ # or /stopped/
24
+ def W32Support.do_and_wait(service_name, operation, wait_for)
25
+ status = W32Support.status(service_name)
26
+ if status =~ wait_for
27
+ # already running call the block once and leave
28
+ yield status
29
+ else
30
+ # start trying to start it
31
+ Win32::Service.send(operation, service_name)
32
+ status = W32Support.status(service_name)
33
+ while status !~ wait_for
34
+ yield status
35
+ status = W32Support.status(service_name)
36
+ end
37
+
38
+ # do one last yield so they know it started
39
+ yield status
40
+ end
41
+ end
42
+
43
+ # Starts the requested service and calls a passed in block
44
+ # until the service is done. You should sleep for a short
45
+ # period until it's done or there's an exception.
46
+ def W32Support.start(service_name)
47
+ W32Support.do_and_wait(service_name, :start, /running/) do |status|
48
+ yield status
49
+ end
50
+ end
51
+
52
+
53
+ # Stops the service. Just like W32Support.start is will call
54
+ # a block while it checks for the service to actually stop.
55
+ def W32Support.stop(service_name)
56
+ W32Support.do_and_wait(service_name, :stop, /stopped/) do |status|
57
+ yield status
58
+ end
59
+ end
60
+
61
+
62
+ # Returns the current_state field of the service.
63
+ def W32Support.status(service_name)
64
+ Win32::Service.status(service_name).current_state
65
+ end
66
+
67
+
68
+ # Deletes the service from the system. It first tries to stop
69
+ # the service, and if you pass in a block it will call it while
70
+ # the service is being stopped.
71
+ def W32Support.delete(service_name)
72
+ begin
73
+ W32Support.stop(service_name) do |status|
74
+ yield status if block_given?
75
+ end
76
+ rescue
77
+ end
78
+
79
+ begin
80
+ Win32::Service.delete(service_name)
81
+ rescue
82
+ end
83
+ end
84
+
85
+ end