forklift_etl 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +10 -0
  3. data/.rbenv-version +1 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +10 -0
  6. data/Gemfile.lock +74 -0
  7. data/Rakefile +13 -0
  8. data/bin/forklift +61 -0
  9. data/doc/EmailSuffix.html +228 -0
  10. data/doc/Forklift.html +187 -0
  11. data/doc/Forklift/Base.html +167 -0
  12. data/doc/Forklift/Base/Connection.html +590 -0
  13. data/doc/Forklift/Base/Logger.html +453 -0
  14. data/doc/Forklift/Base/Mailer.html +399 -0
  15. data/doc/Forklift/Base/Mailer/ERBBinding.html +256 -0
  16. data/doc/Forklift/Base/Pid.html +489 -0
  17. data/doc/Forklift/Base/Utils.html +252 -0
  18. data/doc/Forklift/Connection.html +164 -0
  19. data/doc/Forklift/Connection/Elasticsearch.html +419 -0
  20. data/doc/Forklift/Connection/Mysql.html +939 -0
  21. data/doc/Forklift/Patterns.html +164 -0
  22. data/doc/Forklift/Patterns/Elasticsearch.html +169 -0
  23. data/doc/Forklift/Patterns/Mysql.html +402 -0
  24. data/doc/Forklift/Plan.html +704 -0
  25. data/doc/Gemfile.html +132 -0
  26. data/doc/Object.html +326 -0
  27. data/doc/Rakefile.html +138 -0
  28. data/doc/SpecClient.html +291 -0
  29. data/doc/SpecPlan.html +253 -0
  30. data/doc/SpecSeeds.html +303 -0
  31. data/doc/created.rid +35 -0
  32. data/doc/example/Gemfile.html +129 -0
  33. data/doc/images/add.png +0 -0
  34. data/doc/images/brick.png +0 -0
  35. data/doc/images/brick_link.png +0 -0
  36. data/doc/images/bug.png +0 -0
  37. data/doc/images/bullet_black.png +0 -0
  38. data/doc/images/bullet_toggle_minus.png +0 -0
  39. data/doc/images/bullet_toggle_plus.png +0 -0
  40. data/doc/images/date.png +0 -0
  41. data/doc/images/delete.png +0 -0
  42. data/doc/images/find.png +0 -0
  43. data/doc/images/loadingAnimation.gif +0 -0
  44. data/doc/images/macFFBgHack.png +0 -0
  45. data/doc/images/package.png +0 -0
  46. data/doc/images/page_green.png +0 -0
  47. data/doc/images/page_white_text.png +0 -0
  48. data/doc/images/page_white_width.png +0 -0
  49. data/doc/images/plugin.png +0 -0
  50. data/doc/images/ruby.png +0 -0
  51. data/doc/images/tag_blue.png +0 -0
  52. data/doc/images/tag_green.png +0 -0
  53. data/doc/images/transparent.png +0 -0
  54. data/doc/images/wrench.png +0 -0
  55. data/doc/images/wrench_orange.png +0 -0
  56. data/doc/images/zoom.png +0 -0
  57. data/doc/index.html +122 -0
  58. data/doc/js/darkfish.js +155 -0
  59. data/doc/js/jquery.js +18 -0
  60. data/doc/js/navigation.js +142 -0
  61. data/doc/js/search.js +94 -0
  62. data/doc/js/search_index.js +1 -0
  63. data/doc/js/searcher.js +228 -0
  64. data/doc/rdoc.css +543 -0
  65. data/doc/table_of_contents.html +309 -0
  66. data/example/Gemfile +3 -0
  67. data/example/Gemfile.lock +55 -0
  68. data/example/config/connections/elasticsearch/source.yml +1 -0
  69. data/example/config/connections/mysql/destination.yml +6 -0
  70. data/example/config/connections/mysql/source.yml +6 -0
  71. data/example/config/email.yml +18 -0
  72. data/example/plan.rb +87 -0
  73. data/example/template/email.erb +6 -0
  74. data/example/transformations/cleanup.sql +1 -0
  75. data/example/transformations/combined_name.sql +7 -0
  76. data/example/transformations/email_suffix.rb +20 -0
  77. data/forklift.jpg +0 -0
  78. data/forklift_etl.gemspec +28 -0
  79. data/lib/forklift/base/connection.rb +72 -0
  80. data/lib/forklift/base/logger.rb +49 -0
  81. data/lib/forklift/base/mailer.rb +83 -0
  82. data/lib/forklift/base/pid.rb +55 -0
  83. data/lib/forklift/base/utils.rb +23 -0
  84. data/lib/forklift/forklift.rb +19 -0
  85. data/lib/forklift/patterns/elasticsearch_patterns.rb +7 -0
  86. data/lib/forklift/patterns/mysql_patterns.rb +87 -0
  87. data/lib/forklift/plan.rb +138 -0
  88. data/lib/forklift/transports/elasticsearch.rb +75 -0
  89. data/lib/forklift/transports/mysql.rb +241 -0
  90. data/lib/forklift/version.rb +3 -0
  91. data/readme.md +410 -0
  92. data/spec/config/connections/elasticsearch/forklift_test.yml +1 -0
  93. data/spec/config/connections/mysql/forklift_test_destination.yml +6 -0
  94. data/spec/config/connections/mysql/forklift_test_source_a.yml +6 -0
  95. data/spec/config/connections/mysql/forklift_test_source_b.yml +6 -0
  96. data/spec/config/connections/mysql/forklift_test_working.yml +6 -0
  97. data/spec/config/email.yml +4 -0
  98. data/spec/integration/basic_spec.rb +29 -0
  99. data/spec/integration/elasticsearch_patterns_spec.rb +5 -0
  100. data/spec/integration/elasticsearch_spec.rb +95 -0
  101. data/spec/integration/multi_transport_spec.rb +112 -0
  102. data/spec/integration/mysql_patterns_spec.rb +76 -0
  103. data/spec/integration/mysql_spec.rb +138 -0
  104. data/spec/spec_helper.rb +30 -0
  105. data/spec/support/dumps/elasticsearch/forklift_test.json +7 -0
  106. data/spec/support/dumps/mysql/forklift_test_source_a.sql +79 -0
  107. data/spec/support/dumps/mysql/forklift_test_source_b.sql +23 -0
  108. data/spec/support/spec_client.rb +30 -0
  109. data/spec/support/spec_plan.rb +15 -0
  110. data/spec/support/spec_seeds.rb +69 -0
  111. data/spec/template/spec_email_template.erb +4 -0
  112. data/spec/unit/connection/mysql_spec.rb +102 -0
  113. data/spec/unit/misc/email_spec.rb +37 -0
  114. data/spec/unit/misc/pid_spec.rb +25 -0
  115. data/spec/unit/misc/step_spec.rb +53 -0
  116. data/template/destination.yml +6 -0
  117. data/template/email.erb +1 -0
  118. data/template/email.yml +18 -0
  119. data/template/plan.rb +10 -0
  120. data/template/source.yml +6 -0
  121. metadata +289 -0
@@ -0,0 +1,489 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class Forklift::Base::Pid - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../../js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../../index.html">Home</a>
28
+ <a href="../../table_of_contents.html#classes">Classes</a>
29
+ <a href="../../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+ <div id="file-metadata">
47
+ <nav id="file-list-section" class="section">
48
+ <h3 class="section-header">Defined In</h3>
49
+ <ul>
50
+ <li>lib/forklift/base/pid.rb
51
+ </ul>
52
+ </nav>
53
+
54
+
55
+ </div>
56
+
57
+ <div id="class-metadata">
58
+
59
+ <nav id="parent-class-section" class="section">
60
+ <h3 class="section-header">Parent</h3>
61
+
62
+ <p class="link"><a href="../../Object.html">Object</a>
63
+
64
+ </nav>
65
+
66
+
67
+ <!-- Method Quickref -->
68
+ <nav id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+ <li><a href="#method-c-new">::new</a>
74
+
75
+ <li><a href="#method-i-delete-21">#delete!</a>
76
+
77
+ <li><a href="#method-i-ensure_pid_dir">#ensure_pid_dir</a>
78
+
79
+ <li><a href="#method-i-forklift">#forklift</a>
80
+
81
+ <li><a href="#method-i-pid_dir">#pid_dir</a>
82
+
83
+ <li><a href="#method-i-pidfile">#pidfile</a>
84
+
85
+ <li><a href="#method-i-recall">#recall</a>
86
+
87
+ <li><a href="#method-i-safe_to_run-3F">#safe_to_run?</a>
88
+
89
+ <li><a href="#method-i-store-21">#store!</a>
90
+
91
+ </ul>
92
+ </nav>
93
+
94
+ </div>
95
+
96
+ <div id="project-metadata">
97
+ <nav id="fileindex-section" class="section project-section">
98
+ <h3 class="section-header">Pages</h3>
99
+
100
+ <ul>
101
+
102
+ <li class="file"><a href="../../Gemfile.html">Gemfile</a>
103
+
104
+ <li class="file"><a href="../../Rakefile.html">Rakefile</a>
105
+
106
+ <li class="file"><a href="../../example/Gemfile.html">Gemfile</a>
107
+
108
+ <li class="file"><a href="../../spec/pid/pidfile.html">pidfile</a>
109
+
110
+ </ul>
111
+ </nav>
112
+
113
+ <nav id="classindex-section" class="section project-section">
114
+ <h3 class="section-header">Class and Module Index</h3>
115
+
116
+ <ul class="link-list">
117
+
118
+ <li><a href="../../Forklift.html">Forklift</a>
119
+
120
+ <li><a href="../../Forklift/Base.html">Forklift::Base</a>
121
+
122
+ <li><a href="../../Forklift/Base/Connection.html">Forklift::Base::Connection</a>
123
+
124
+ <li><a href="../../Forklift/Base/Logger.html">Forklift::Base::Logger</a>
125
+
126
+ <li><a href="../../Forklift/Base/Mailer.html">Forklift::Base::Mailer</a>
127
+
128
+ <li><a href="../../Forklift/Base/Mailer/ERBBinding.html">Forklift::Base::Mailer::ERBBinding</a>
129
+
130
+ <li><a href="../../Forklift/Base/Pid.html">Forklift::Base::Pid</a>
131
+
132
+ <li><a href="../../Forklift/Base/Utils.html">Forklift::Base::Utils</a>
133
+
134
+ <li><a href="../../Forklift/Connection.html">Forklift::Connection</a>
135
+
136
+ <li><a href="../../Forklift/Connection/Elasticsearch.html">Forklift::Connection::Elasticsearch</a>
137
+
138
+ <li><a href="../../Forklift/Connection/Mysql.html">Forklift::Connection::Mysql</a>
139
+
140
+ <li><a href="../../Forklift/Patterns.html">Forklift::Patterns</a>
141
+
142
+ <li><a href="../../Forklift/Patterns/Elasticsearch.html">Forklift::Patterns::Elasticsearch</a>
143
+
144
+ <li><a href="../../Forklift/Patterns/Mysql.html">Forklift::Patterns::Mysql</a>
145
+
146
+ <li><a href="../../Forklift/Plan.html">Forklift::Plan</a>
147
+
148
+ <li><a href="../../EmailSuffix.html">EmailSuffix</a>
149
+
150
+ <li><a href="../../Object.html">Object</a>
151
+
152
+ <li><a href="../../SpecClient.html">SpecClient</a>
153
+
154
+ <li><a href="../../SpecPlan.html">SpecPlan</a>
155
+
156
+ <li><a href="../../SpecSeeds.html">SpecSeeds</a>
157
+
158
+ </ul>
159
+ </nav>
160
+
161
+ </div>
162
+ </nav>
163
+
164
+ <div id="documentation">
165
+ <h1 class="class">class Forklift::Base::Pid</h1>
166
+
167
+ <div id="description" class="description">
168
+
169
+ </div><!-- description -->
170
+
171
+
172
+
173
+
174
+ <section id="5Buntitled-5D" class="documentation-section">
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+ <!-- Methods -->
184
+
185
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
186
+ <h3 class="section-header">Public Class Methods</h3>
187
+
188
+
189
+ <div id="method-c-new" class="method-detail ">
190
+
191
+ <div class="method-heading">
192
+ <span class="method-name">new</span><span
193
+ class="method-args">(forklift)</span>
194
+ <span class="method-click-advice">click to toggle source</span>
195
+ </div>
196
+
197
+
198
+ <div class="method-description">
199
+
200
+
201
+
202
+
203
+
204
+ <div class="method-source-code" id="new-source">
205
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 5</span>
206
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">forklift</span>)
207
+ <span class="ruby-ivar">@forklift</span> = <span class="ruby-identifier">forklift</span>
208
+ <span class="ruby-keyword">end</span></pre>
209
+ </div><!-- new-source -->
210
+
211
+ </div>
212
+
213
+
214
+
215
+
216
+ </div><!-- new-method -->
217
+
218
+
219
+ </section><!-- public-class-method-details -->
220
+
221
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
222
+ <h3 class="section-header">Public Instance Methods</h3>
223
+
224
+
225
+ <div id="method-i-delete-21" class="method-detail ">
226
+
227
+ <div class="method-heading">
228
+ <span class="method-name">delete!</span><span
229
+ class="method-args">()</span>
230
+ <span class="method-click-advice">click to toggle source</span>
231
+ </div>
232
+
233
+
234
+ <div class="method-description">
235
+
236
+
237
+
238
+
239
+
240
+ <div class="method-source-code" id="delete-21-source">
241
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 36</span>
242
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">delete!</span>
243
+ <span class="ruby-identifier">forklift</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Removing pidfile @ #{pidfile}&quot;</span>
244
+ <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm</span>(<span class="ruby-identifier">pidfile</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
245
+ <span class="ruby-keyword">end</span></pre>
246
+ </div><!-- delete-21-source -->
247
+
248
+ </div>
249
+
250
+
251
+
252
+
253
+ </div><!-- delete-21-method -->
254
+
255
+
256
+ <div id="method-i-ensure_pid_dir" class="method-detail ">
257
+
258
+ <div class="method-heading">
259
+ <span class="method-name">ensure_pid_dir</span><span
260
+ class="method-args">()</span>
261
+ <span class="method-click-advice">click to toggle source</span>
262
+ </div>
263
+
264
+
265
+ <div class="method-description">
266
+
267
+
268
+
269
+
270
+
271
+ <div class="method-source-code" id="ensure_pid_dir-source">
272
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 17</span>
273
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">ensure_pid_dir</span>
274
+ <span class="ruby-node">%xmkdir -p #{pid_dir}`</span>
275
+ <span class="ruby-keyword">end</span></pre>
276
+ </div><!-- ensure_pid_dir-source -->
277
+
278
+ </div>
279
+
280
+
281
+
282
+
283
+ </div><!-- ensure_pid_dir-method -->
284
+
285
+
286
+ <div id="method-i-forklift" class="method-detail ">
287
+
288
+ <div class="method-heading">
289
+ <span class="method-name">forklift</span><span
290
+ class="method-args">()</span>
291
+ <span class="method-click-advice">click to toggle source</span>
292
+ </div>
293
+
294
+
295
+ <div class="method-description">
296
+
297
+
298
+
299
+
300
+
301
+ <div class="method-source-code" id="forklift-source">
302
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 9</span>
303
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">forklift</span>
304
+ <span class="ruby-ivar">@forklift</span>
305
+ <span class="ruby-keyword">end</span></pre>
306
+ </div><!-- forklift-source -->
307
+
308
+ </div>
309
+
310
+
311
+
312
+
313
+ </div><!-- forklift-method -->
314
+
315
+
316
+ <div id="method-i-pid_dir" class="method-detail ">
317
+
318
+ <div class="method-heading">
319
+ <span class="method-name">pid_dir</span><span
320
+ class="method-args">()</span>
321
+ <span class="method-click-advice">click to toggle source</span>
322
+ </div>
323
+
324
+
325
+ <div class="method-description">
326
+
327
+
328
+
329
+
330
+
331
+ <div class="method-source-code" id="pid_dir-source">
332
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 13</span>
333
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pid_dir</span>
334
+ <span class="ruby-node">&quot;#{forklift.config[:project_root]}/pid&quot;</span>
335
+ <span class="ruby-keyword">end</span></pre>
336
+ </div><!-- pid_dir-source -->
337
+
338
+ </div>
339
+
340
+
341
+
342
+
343
+ </div><!-- pid_dir-method -->
344
+
345
+
346
+ <div id="method-i-pidfile" class="method-detail ">
347
+
348
+ <div class="method-heading">
349
+ <span class="method-name">pidfile</span><span
350
+ class="method-args">()</span>
351
+ <span class="method-click-advice">click to toggle source</span>
352
+ </div>
353
+
354
+
355
+ <div class="method-description">
356
+
357
+
358
+
359
+
360
+
361
+ <div class="method-source-code" id="pidfile-source">
362
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 21</span>
363
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pidfile</span>
364
+ <span class="ruby-node">&quot;#{pid_dir}/pidfile&quot;</span>
365
+ <span class="ruby-keyword">end</span></pre>
366
+ </div><!-- pidfile-source -->
367
+
368
+ </div>
369
+
370
+
371
+
372
+
373
+ </div><!-- pidfile-method -->
374
+
375
+
376
+ <div id="method-i-recall" class="method-detail ">
377
+
378
+ <div class="method-heading">
379
+ <span class="method-name">recall</span><span
380
+ class="method-args">()</span>
381
+ <span class="method-click-advice">click to toggle source</span>
382
+ </div>
383
+
384
+
385
+ <div class="method-description">
386
+
387
+
388
+
389
+
390
+
391
+ <div class="method-source-code" id="recall-source">
392
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 31</span>
393
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">recall</span>
394
+ <span class="ruby-identifier">ensure_pid_dir</span>
395
+ <span class="ruby-constant">IO</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">pidfile</span>).<span class="ruby-identifier">to_i</span> <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
396
+ <span class="ruby-keyword">end</span></pre>
397
+ </div><!-- recall-source -->
398
+
399
+ </div>
400
+
401
+
402
+
403
+
404
+ </div><!-- recall-method -->
405
+
406
+
407
+ <div id="method-i-safe_to_run-3F" class="method-detail ">
408
+
409
+ <div class="method-heading">
410
+ <span class="method-name">safe_to_run?</span><span
411
+ class="method-args">()</span>
412
+ <span class="method-click-advice">click to toggle source</span>
413
+ </div>
414
+
415
+
416
+ <div class="method-description">
417
+
418
+
419
+
420
+
421
+
422
+ <div class="method-source-code" id="safe_to_run-3F-source">
423
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 41</span>
424
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">safe_to_run?</span>
425
+ <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">recall</span>.<span class="ruby-identifier">nil?</span>
426
+ <span class="ruby-identifier">count</span> = <span class="ruby-node">%xps -p #{recall} | wc -l`</span>.<span class="ruby-identifier">to_i</span>
427
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">count</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">2</span>
428
+ <span class="ruby-identifier">forklift</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">fatal</span> <span class="ruby-node">&quot;This application is already running (pidfile) #{recall}. Exiting now&quot;</span>
429
+ <span class="ruby-identifier">exit</span>(<span class="ruby-value">1</span>)
430
+ <span class="ruby-keyword">else</span>
431
+ <span class="ruby-identifier">forklift</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">log</span> <span class="ruby-node">&quot;Clearing old pidfile from previous process #{recall}&quot;</span>
432
+ <span class="ruby-identifier">delete!</span>
433
+ <span class="ruby-keyword">end</span>
434
+ <span class="ruby-keyword">end</span></pre>
435
+ </div><!-- safe_to_run-3F-source -->
436
+
437
+ </div>
438
+
439
+
440
+
441
+
442
+ </div><!-- safe_to_run-3F-method -->
443
+
444
+
445
+ <div id="method-i-store-21" class="method-detail ">
446
+
447
+ <div class="method-heading">
448
+ <span class="method-name">store!</span><span
449
+ class="method-args">()</span>
450
+ <span class="method-click-advice">click to toggle source</span>
451
+ </div>
452
+
453
+
454
+ <div class="method-description">
455
+
456
+
457
+
458
+
459
+
460
+ <div class="method-source-code" id="store-21-source">
461
+ <pre><span class="ruby-comment"># File lib/forklift/base/pid.rb, line 25</span>
462
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">store!</span>
463
+ <span class="ruby-identifier">forklift</span>.<span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;Creating pidfile @ #{pidfile}&quot;</span>
464
+ <span class="ruby-identifier">ensure_pid_dir</span>
465
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">pidfile</span>, <span class="ruby-string">'w'</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>}
466
+ <span class="ruby-keyword">end</span></pre>
467
+ </div><!-- store-21-source -->
468
+
469
+ </div>
470
+
471
+
472
+
473
+
474
+ </div><!-- store-21-method -->
475
+
476
+
477
+ </section><!-- public-instance-method-details -->
478
+
479
+ </section><!-- 5Buntitled-5D -->
480
+
481
+ </div><!-- documentation -->
482
+
483
+
484
+ <footer id="validator-badges">
485
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
486
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.2.
487
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
488
+ </footer>
489
+