disbatch 0.0.4

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.
@@ -0,0 +1,446 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <base id="base_target" target="_parent" />
19
+ </head>
20
+ <body>
21
+ <script type="text/javascript" charset="utf-8">
22
+ if (window.top.frames.main) {
23
+ document.getElementById('base_target').target = 'main';
24
+ document.body.className = 'frames';
25
+ }
26
+ </script>
27
+ <div id="content">
28
+ <h1 id="full_list_header">Method List</h1>
29
+ <div id="nav">
30
+
31
+ <a target="_self" href="class_list.html">Classes</a>
32
+
33
+ <a target="_self" href="method_list.html">Methods</a>
34
+
35
+ <a target="_self" href="file_list.html">Files</a>
36
+
37
+ </div>
38
+ <div id="search">Search: <input type="text" /></div>
39
+
40
+ <ul id="full_list" class="methods">
41
+
42
+
43
+ <li class="r1 ">
44
+ <span class='object_link'><a href="Disbatch/Node.html#%3D%3D-instance_method" title="Disbatch::Node#== (method)">#==</a></span>
45
+
46
+ <small>Disbatch::Node</small>
47
+
48
+ </li>
49
+
50
+
51
+ <li class="r2 ">
52
+ <span class='object_link'><a href="Disbatch/Queue.html#%3D%3D-instance_method" title="Disbatch::Queue#== (method)">#==</a></span>
53
+
54
+ <small>Disbatch::Queue</small>
55
+
56
+ </li>
57
+
58
+
59
+ <li class="r1 ">
60
+ <span class='object_link'><a href="Disbatch/Plugin.html#%5B%5D-instance_method" title="Disbatch::Plugin#[] (method)">#[]</a></span>
61
+
62
+ <small>Disbatch::Plugin</small>
63
+
64
+ </li>
65
+
66
+
67
+ <li class="r2 ">
68
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#conclude-instance_method" title="Disbatch::Queue::Task#conclude (method)">#conclude</a></span>
69
+
70
+ <small>Disbatch::Queue::Task</small>
71
+
72
+ </li>
73
+
74
+
75
+ <li class="r1 ">
76
+ <span class='object_link'><a href="Disbatch/Node.html#create-class_method" title="Disbatch::Node.create (method)">create</a></span>
77
+
78
+ <small>Disbatch::Node</small>
79
+
80
+ </li>
81
+
82
+
83
+ <li class="r2 ">
84
+ <span class='object_link'><a href="Disbatch/Queue.html#create-class_method" title="Disbatch::Queue.create (method)">create</a></span>
85
+
86
+ <small>Disbatch::Queue</small>
87
+
88
+ </li>
89
+
90
+
91
+ <li class="r1 ">
92
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#create-class_method" title="Disbatch::Queue::Task.create (method)">create</a></span>
93
+
94
+ <small>Disbatch::Queue::Task</small>
95
+
96
+ </li>
97
+
98
+
99
+ <li class="r2 ">
100
+ <span class='object_link'><a href="Disbatch.html#db-instance_method" title="Disbatch#db (method)">#db</a></span>
101
+
102
+ <small>Disbatch</small>
103
+
104
+ </li>
105
+
106
+
107
+ <li class="r1 ">
108
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#execute%21-instance_method" title="Disbatch::Queue::Task#execute! (method)">#execute!</a></span>
109
+
110
+ <small>Disbatch::Queue::Task</small>
111
+
112
+ </li>
113
+
114
+
115
+ <li class="r2 ">
116
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#fail-instance_method" title="Disbatch::Queue::Task#fail (method)">#fail</a></span>
117
+
118
+ <small>Disbatch::Queue::Task</small>
119
+
120
+ </li>
121
+
122
+
123
+ <li class="r1 ">
124
+ <span class='object_link'><a href="Disbatch/Node.html#get-class_method" title="Disbatch::Node.get (method)">get</a></span>
125
+
126
+ <small>Disbatch::Node</small>
127
+
128
+ </li>
129
+
130
+
131
+ <li class="r2 ">
132
+ <span class='object_link'><a href="Disbatch/Queue.html#get-class_method" title="Disbatch::Queue.get (method)">get</a></span>
133
+
134
+ <small>Disbatch::Queue</small>
135
+
136
+ </li>
137
+
138
+
139
+ <li class="r1 ">
140
+ <span class='object_link'><a href="Disbatch/Node.html#get_all-class_method" title="Disbatch::Node.get_all (method)">get_all</a></span>
141
+
142
+ <small>Disbatch::Node</small>
143
+
144
+ </li>
145
+
146
+
147
+ <li class="r2 ">
148
+ <span class='object_link'><a href="Disbatch/Queue.html#get_all-class_method" title="Disbatch::Queue.get_all (method)">get_all</a></span>
149
+
150
+ <small>Disbatch::Queue</small>
151
+
152
+ </li>
153
+
154
+
155
+ <li class="r1 ">
156
+ <span class='object_link'><a href="Disbatch/Node.html#id-instance_method" title="Disbatch::Node#id (method)">#id</a></span>
157
+
158
+ <small>Disbatch::Node</small>
159
+
160
+ </li>
161
+
162
+
163
+ <li class="r2 ">
164
+ <span class='object_link'><a href="Disbatch/Queue.html#id-instance_method" title="Disbatch::Queue#id (method)">#id</a></span>
165
+
166
+ <small>Disbatch::Queue</small>
167
+
168
+ </li>
169
+
170
+
171
+ <li class="r1 ">
172
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#id-instance_method" title="Disbatch::Queue::Task#id (method)">#id</a></span>
173
+
174
+ <small>Disbatch::Queue::Task</small>
175
+
176
+ </li>
177
+
178
+
179
+ <li class="r2 ">
180
+ <span class='object_link'><a href="Disbatch/Plugin.html#init-instance_method" title="Disbatch::Plugin#init (method)">#init</a></span>
181
+
182
+ <small>Disbatch::Plugin</small>
183
+
184
+ </li>
185
+
186
+
187
+ <li class="r1 ">
188
+ <span class='object_link'><a href="Disbatch/Plugin.html#init_all-instance_method" title="Disbatch::Plugin#init_all (method)">#init_all</a></span>
189
+
190
+ <small>Disbatch::Plugin</small>
191
+
192
+ </li>
193
+
194
+
195
+ <li class="r2 ">
196
+ <span class='object_link'><a href="Disbatch/Node.html#initialize-instance_method" title="Disbatch::Node#initialize (method)">#initialize</a></span>
197
+
198
+ <small>Disbatch::Node</small>
199
+
200
+ </li>
201
+
202
+
203
+ <li class="r1 ">
204
+ <span class='object_link'><a href="Disbatch/Queue.html#initialize-instance_method" title="Disbatch::Queue#initialize (method)">#initialize</a></span>
205
+
206
+ <small>Disbatch::Queue</small>
207
+
208
+ </li>
209
+
210
+
211
+ <li class="r2 ">
212
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#initialize-instance_method" title="Disbatch::Queue::Task#initialize (method)">#initialize</a></span>
213
+
214
+ <small>Disbatch::Queue::Task</small>
215
+
216
+ </li>
217
+
218
+
219
+ <li class="r1 ">
220
+ <span class='object_link'><a href="Disbatch/Queue.html#length-instance_method" title="Disbatch::Queue#length (method)">#length</a></span>
221
+
222
+ <small>Disbatch::Queue</small>
223
+
224
+ </li>
225
+
226
+
227
+ <li class="r2 ">
228
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#log-instance_method" title="Disbatch::Queue::Task#log (method)">#log</a></span>
229
+
230
+ <small>Disbatch::Queue::Task</small>
231
+
232
+ </li>
233
+
234
+
235
+ <li class="r1 ">
236
+ <span class='object_link'><a href="Disbatch.html#mongo_db-instance_method" title="Disbatch#mongo_db (method)">#mongo_db</a></span>
237
+
238
+ <small>Disbatch</small>
239
+
240
+ </li>
241
+
242
+
243
+ <li class="r2 ">
244
+ <span class='object_link'><a href="Disbatch.html#mongo_hosts-instance_method" title="Disbatch#mongo_hosts (method)">#mongo_hosts</a></span>
245
+
246
+ <small>Disbatch</small>
247
+
248
+ </li>
249
+
250
+
251
+ <li class="r1 ">
252
+ <span class='object_link'><a href="Disbatch.html#mongo_opts-instance_method" title="Disbatch#mongo_opts (method)">#mongo_opts</a></span>
253
+
254
+ <small>Disbatch</small>
255
+
256
+ </li>
257
+
258
+
259
+ <li class="r2 ">
260
+ <span class='object_link'><a href="Disbatch.html#node-instance_method" title="Disbatch#node (method)">#node</a></span>
261
+
262
+ <small>Disbatch</small>
263
+
264
+ </li>
265
+
266
+
267
+ <li class="r1 ">
268
+ <span class='object_link'><a href="Disbatch.html#node_id-instance_method" title="Disbatch#node_id (method)">#node_id</a></span>
269
+
270
+ <small>Disbatch</small>
271
+
272
+ </li>
273
+
274
+
275
+ <li class="r2 ">
276
+ <span class='object_link'><a href="Disbatch/Node.html#open%3F-instance_method" title="Disbatch::Node#open? (method)">#open?</a></span>
277
+
278
+ <small>Disbatch::Node</small>
279
+
280
+ </li>
281
+
282
+
283
+ <li class="r1 ">
284
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#parameters-instance_method" title="Disbatch::Queue::Task#parameters (method)">#parameters</a></span>
285
+
286
+ <small>Disbatch::Queue::Task</small>
287
+
288
+ </li>
289
+
290
+
291
+ <li class="r2 ">
292
+ <span class='object_link'><a href="Disbatch/Queue.html#plugin-instance_method" title="Disbatch::Queue#plugin (method)">#plugin</a></span>
293
+
294
+ <small>Disbatch::Queue</small>
295
+
296
+ </li>
297
+
298
+
299
+ <li class="r1 ">
300
+ <span class='object_link'><a href="Disbatch/Plugin.html#plugins-instance_method" title="Disbatch::Plugin#plugins (method)">#plugins</a></span>
301
+
302
+ <small>Disbatch::Plugin</small>
303
+
304
+ </li>
305
+
306
+
307
+ <li class="r2 ">
308
+ <span class='object_link'><a href="Disbatch/Queue.html#pop-instance_method" title="Disbatch::Queue#pop (method)">#pop</a></span>
309
+
310
+ <small>Disbatch::Queue</small>
311
+
312
+ </li>
313
+
314
+
315
+ <li class="r1 ">
316
+ <span class='object_link'><a href="Disbatch/Queue.html#push-instance_method" title="Disbatch::Queue#push (method)">#push</a></span>
317
+
318
+ <small>Disbatch::Queue</small>
319
+
320
+ </li>
321
+
322
+
323
+ <li class="r2 ">
324
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#query-instance_method" title="Disbatch::Queue::Task#query (method)">#query</a></span>
325
+
326
+ <small>Disbatch::Queue::Task</small>
327
+
328
+ </li>
329
+
330
+
331
+ <li class="r1 ">
332
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#queue-instance_method" title="Disbatch::Queue::Task#queue (method)">#queue</a></span>
333
+
334
+ <small>Disbatch::Queue::Task</small>
335
+
336
+ </li>
337
+
338
+
339
+ <li class="r2 ">
340
+ <span class='object_link'><a href="Disbatch/Node.html#register-instance_method" title="Disbatch::Node#register (method)">#register</a></span>
341
+
342
+ <small>Disbatch::Node</small>
343
+
344
+ </li>
345
+
346
+
347
+ <li class="r1 ">
348
+ <span class='object_link'><a href="Disbatch/Plugin.html#register-instance_method" title="Disbatch::Plugin#register (method)">#register</a></span>
349
+
350
+ <small>Disbatch::Plugin</small>
351
+
352
+ </li>
353
+
354
+
355
+ <li class="r2 ">
356
+ <span class='object_link'><a href="Disbatch/Node.html#release-instance_method" title="Disbatch::Node#release (method)">#release</a></span>
357
+
358
+ <small>Disbatch::Node</small>
359
+
360
+ </li>
361
+
362
+
363
+ <li class="r1 ">
364
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#release-instance_method" title="Disbatch::Queue::Task#release (method)">#release</a></span>
365
+
366
+ <small>Disbatch::Queue::Task</small>
367
+
368
+ </li>
369
+
370
+
371
+ <li class="r2 ">
372
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#status-instance_method" title="Disbatch::Queue::Task#status (method)">#status</a></span>
373
+
374
+ <small>Disbatch::Queue::Task</small>
375
+
376
+ </li>
377
+
378
+
379
+ <li class="r1 ">
380
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#status%3D-instance_method" title="Disbatch::Queue::Task#status= (method)">#status=</a></span>
381
+
382
+ <small>Disbatch::Queue::Task</small>
383
+
384
+ </li>
385
+
386
+
387
+ <li class="r2 ">
388
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stderr-instance_method" title="Disbatch::Queue::Task#stderr (method)">#stderr</a></span>
389
+
390
+ <small>Disbatch::Queue::Task</small>
391
+
392
+ </li>
393
+
394
+
395
+ <li class="r1 ">
396
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stderr%3D-instance_method" title="Disbatch::Queue::Task#stderr= (method)">#stderr=</a></span>
397
+
398
+ <small>Disbatch::Queue::Task</small>
399
+
400
+ </li>
401
+
402
+
403
+ <li class="r2 ">
404
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stdout-instance_method" title="Disbatch::Queue::Task#stdout (method)">#stdout</a></span>
405
+
406
+ <small>Disbatch::Queue::Task</small>
407
+
408
+ </li>
409
+
410
+
411
+ <li class="r1 ">
412
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stdout%3D-instance_method" title="Disbatch::Queue::Task#stdout= (method)">#stdout=</a></span>
413
+
414
+ <small>Disbatch::Queue::Task</small>
415
+
416
+ </li>
417
+
418
+
419
+ <li class="r2 ">
420
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#take-class_method" title="Disbatch::Queue::Task.take (method)">take</a></span>
421
+
422
+ <small>Disbatch::Queue::Task</small>
423
+
424
+ </li>
425
+
426
+
427
+ <li class="r1 ">
428
+ <span class='object_link'><a href="Mongo.html#try-class_method" title="Mongo.try (method)">try</a></span>
429
+
430
+ <small>Mongo</small>
431
+
432
+ </li>
433
+
434
+
435
+ <li class="r2 ">
436
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#update-instance_method" title="Disbatch::Queue::Task#update (method)">#update</a></span>
437
+
438
+ <small>Disbatch::Queue::Task</small>
439
+
440
+ </li>
441
+
442
+
443
+ </ul>
444
+ </div>
445
+ </body>
446
+ </html>
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="_index.html">Index</a> &raquo;
37
+
38
+
39
+ <span class="title">Top Level Namespace</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Top Level Namespace
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ </dl>
75
+ <div class="clear"></div>
76
+
77
+ <h2>Defined Under Namespace</h2>
78
+ <p class="children">
79
+
80
+
81
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Disbatch.html" title="Disbatch (module)">Disbatch</a></span>, <span class='object_link'><a href="Mongo.html" title="Mongo (module)">Mongo</a></span>
82
+
83
+
84
+
85
+
86
+ </p>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+ </div>
95
+
96
+ <div id="footer">
97
+ Generated on Mon Oct 24 16:54:01 2011 by
98
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
99
+ 0.7.3 (ruby-1.8.7).
100
+ </div>
101
+
102
+ </body>
103
+ </html>
@@ -0,0 +1,6 @@
1
+ module Disbatch
2
+
3
+ # Raised when attempting to open an invalid node
4
+ class NoNodeError < RuntimeError; end
5
+
6
+ end
@@ -0,0 +1,105 @@
1
+ # Represesents a Disbatch node
2
+ class Disbatch::Node
3
+
4
+ attr_accessor :id
5
+
6
+ private_class_method :new
7
+
8
+ # Create a node object
9
+ #
10
+ # @param [String] id
11
+ def initialize(id)
12
+ @open = false
13
+ @id = id
14
+ end
15
+
16
+ # Get an existing node
17
+ #
18
+ # @param [String] id
19
+ def self.get(id = Disbatch.node_id)
20
+ Mongo.try do
21
+ Disbatch.db[:nodes].find_one({:_id => id}) ? new(id) : nil
22
+ end
23
+ end
24
+
25
+ # Get all existing nodes
26
+ def self.get_all
27
+ Mongo.try do
28
+ Disbatch.db[:nodes].find.map { |doc| new(doc['_id']) }
29
+ end
30
+ end
31
+
32
+ # Create a new node
33
+ #
34
+ # @param [String] id
35
+ def self.create(id = Disbatch.node_id)
36
+ Mongo.try do
37
+ Disbatch.db[:nodes].insert({
38
+ :_id => id,
39
+ :ctime => Time.now
40
+ })
41
+ end
42
+
43
+ new(id)
44
+ end
45
+
46
+ # Register node
47
+ def register(force = false)
48
+ return true if @open
49
+
50
+ # FIXME - check for existing registration seperately, throw exception
51
+
52
+ doc = Mongo.try do
53
+ Disbatch.db[:nodes].find_and_modify({
54
+ :query => force ? { :_id => @id } : { :_id => @id, :pid => nil },
55
+ :update => { :$set => {
56
+ :pid => Process.pid,
57
+ :version => Disbatch::VERSION,
58
+ :spec_version => Disbatch::SPEC_VERSION
59
+ } }
60
+ })
61
+ end
62
+
63
+ if doc.nil?
64
+ false
65
+ else
66
+ @open = true
67
+ self
68
+ end
69
+ end
70
+
71
+ # Release ownership of node
72
+ def release
73
+ return false unless @open
74
+
75
+ doc = Mongo.try do
76
+ Disbatch.db[:nodes].find_and_modify({
77
+ :query => { :_id => @id, :pid => Process.pid },
78
+ :update => { :$set => {
79
+ :pid => nil,
80
+ :mtime => Time.now,
81
+ :atime => Time.now
82
+ } }
83
+ })
84
+ end
85
+
86
+ if doc.nil?
87
+ false
88
+ else
89
+ @open = false
90
+ true
91
+ end
92
+ end
93
+
94
+ def open?
95
+ @open
96
+ end
97
+
98
+ # Check equality with another node object
99
+ #
100
+ # @param [Disbatch::Node] node another node to compare against
101
+ def ==(node)
102
+ @id == node.id
103
+ end
104
+
105
+ end
@@ -0,0 +1,33 @@
1
+ module Disbatch::Plugin::Hello
2
+
3
+ def execute(task)
4
+ return nil unless defined?(task) && task.respond_to?(:params)
5
+
6
+ name = task.params['name']
7
+ len = rand(5)
8
+
9
+ task.log("Hello, #{name}!")
10
+ sleep(len)
11
+ task.log("Goodbye, #{name}. It was a pleasure spending #{len} seconds with you.")
12
+
13
+ puts("Executed task with params: #{task.params.inspect}")
14
+
15
+ task.conclude
16
+ end
17
+
18
+ def params
19
+ return [
20
+ {
21
+ 'name' => 'name',
22
+ 'type' => 'string',
23
+ 'default' => 'world',
24
+ 'description' => 'some person or thing to greet'
25
+ }
26
+ ]
27
+ end
28
+
29
+ extend self
30
+
31
+ Disbatch::Plugin.register(self)
32
+
33
+ end