ssn_validator 1.0.9 → 1.0.10

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 (56) hide show
  1. data/History.txt +5 -0
  2. data/Rakefile +61 -60
  3. data/VERSION.yml +1 -1
  4. data/lib/ssn_validator/models/death_master_file_loader.rb +46 -43
  5. data/rdoc/DeathMasterFile.html +139 -0
  6. data/rdoc/DeathMasterFileLoader.html +384 -0
  7. data/rdoc/LICENSE.html +116 -0
  8. data/rdoc/README_rdoc.html +226 -0
  9. data/rdoc/SsnHighGroupCode.html +139 -0
  10. data/rdoc/SsnHighGroupCodeLoader.html +251 -0
  11. data/rdoc/SsnValidator/Ntis.html +139 -0
  12. data/rdoc/SsnValidator/Ssn.html +417 -0
  13. data/rdoc/SsnValidator.html +134 -0
  14. data/rdoc/created.rid +10 -1
  15. data/rdoc/images/add.png +0 -0
  16. data/rdoc/images/brick.png +0 -0
  17. data/rdoc/images/brick_link.png +0 -0
  18. data/rdoc/images/bug.png +0 -0
  19. data/rdoc/images/bullet_black.png +0 -0
  20. data/rdoc/images/bullet_toggle_minus.png +0 -0
  21. data/rdoc/images/bullet_toggle_plus.png +0 -0
  22. data/rdoc/images/date.png +0 -0
  23. data/rdoc/images/delete.png +0 -0
  24. data/rdoc/images/find.png +0 -0
  25. data/rdoc/images/loadingAnimation.gif +0 -0
  26. data/rdoc/images/macFFBgHack.png +0 -0
  27. data/rdoc/images/package.png +0 -0
  28. data/rdoc/images/page_green.png +0 -0
  29. data/rdoc/images/page_white_text.png +0 -0
  30. data/rdoc/images/page_white_width.png +0 -0
  31. data/rdoc/images/plugin.png +0 -0
  32. data/rdoc/images/ruby.png +0 -0
  33. data/rdoc/images/tag_blue.png +0 -0
  34. data/rdoc/images/tag_green.png +0 -0
  35. data/rdoc/images/transparent.png +0 -0
  36. data/rdoc/images/wrench.png +0 -0
  37. data/rdoc/images/wrench_orange.png +0 -0
  38. data/rdoc/images/zoom.png +0 -0
  39. data/rdoc/index.html +89 -21
  40. data/rdoc/js/darkfish.js +153 -0
  41. data/rdoc/js/jquery.js +18 -0
  42. data/rdoc/js/navigation.js +142 -0
  43. data/rdoc/js/search.js +94 -0
  44. data/rdoc/js/search_index.js +1 -0
  45. data/rdoc/js/searcher.js +228 -0
  46. data/rdoc/lib/ssn_validator/models/death_master_file_loader_rb.html +95 -0
  47. data/rdoc/lib/ssn_validator/models/death_master_file_rb.html +95 -0
  48. data/rdoc/lib/ssn_validator/models/ssn_high_group_code_loader_rb.html +95 -0
  49. data/rdoc/lib/ssn_validator/models/ssn_high_group_code_rb.html +95 -0
  50. data/rdoc/lib/ssn_validator/models/ssn_validator_rb.html +95 -0
  51. data/rdoc/lib/ssn_validator/ntis_rb.html +95 -0
  52. data/rdoc/lib/ssn_validator_rb.html +95 -0
  53. data/rdoc/rdoc.css +543 -0
  54. data/rdoc/table_of_contents.html +107 -0
  55. data/ssn_validator.gemspec +54 -14
  56. metadata +56 -20
@@ -0,0 +1,384 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>Class: DeathMasterFileLoader</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/ssn_validator/models/death_master_file_loader.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">Object
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-load_update_files_from_web">::load_update_files_from_web</a>
74
+
75
+ <li><a href="#method-c-new">::new</a>
76
+
77
+ <li><a href="#method-i-get_file_from_web">#get_file_from_web</a>
78
+
79
+ <li><a href="#method-i-load_file">#load_file</a>
80
+
81
+ <li><a href="#method-i-valid-3F">#valid?</a>
82
+
83
+ </ul>
84
+ </nav>
85
+
86
+ </div>
87
+
88
+ <div id="project-metadata">
89
+ <nav id="fileindex-section" class="section project-section">
90
+ <h3 class="section-header">Pages</h3>
91
+
92
+ <ul>
93
+
94
+ <li class="file"><a href="./LICENSE.html">LICENSE</a>
95
+
96
+ <li class="file"><a href="./README_rdoc.html">README</a>
97
+
98
+ </ul>
99
+ </nav>
100
+
101
+ <nav id="classindex-section" class="section project-section">
102
+ <h3 class="section-header">Class and Module Index</h3>
103
+
104
+ <ul class="link-list">
105
+
106
+ <li><a href="./SsnValidator.html">SsnValidator</a>
107
+
108
+ <li><a href="./SsnValidator/Ntis.html">SsnValidator::Ntis</a>
109
+
110
+ <li><a href="./SsnValidator/Ssn.html">SsnValidator::Ssn</a>
111
+
112
+ <li><a href="./DeathMasterFile.html">DeathMasterFile</a>
113
+
114
+ <li><a href="./DeathMasterFileLoader.html">DeathMasterFileLoader</a>
115
+
116
+ <li><a href="./SsnHighGroupCode.html">SsnHighGroupCode</a>
117
+
118
+ <li><a href="./SsnHighGroupCodeLoader.html">SsnHighGroupCodeLoader</a>
119
+
120
+ </ul>
121
+ </nav>
122
+
123
+ </div>
124
+ </nav>
125
+
126
+ <div id="documentation">
127
+ <h1 class="class">class DeathMasterFileLoader</h1>
128
+
129
+ <div id="description" class="description">
130
+
131
+ </div><!-- description -->
132
+
133
+
134
+
135
+
136
+ <section id="5Buntitled-5D" class="documentation-section">
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ <!-- Methods -->
146
+
147
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
148
+ <h3 class="section-header">Public Class Methods</h3>
149
+
150
+
151
+ <div id="method-c-load_update_files_from_web" class="method-detail ">
152
+
153
+ <div class="method-heading">
154
+ <span class="method-name">load_update_files_from_web</span><span
155
+ class="method-args">() { |"Loading file| ... }</span>
156
+ <span class="method-click-advice">click to toggle source</span>
157
+ </div>
158
+
159
+
160
+ <div class="method-description">
161
+
162
+ <p>Loads all the update files from dmf.ntis.gov. It starts with the last file
163
+ loaded, and loads each missing file in sequence up to the current file.</p>
164
+
165
+
166
+
167
+ <div class="method-source-code" id="load_update_files_from_web-source">
168
+ <pre><span class="ruby-comment"># File lib/ssn_validator/models/death_master_file_loader.rb, line 80</span>
169
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load_update_files_from_web</span>
170
+ <span class="ruby-identifier">max_as_of</span> = <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">maximum</span>(<span class="ruby-value">:as_of</span>)
171
+ <span class="ruby-identifier">run_file_date</span> = <span class="ruby-identifier">max_as_of</span>.<span class="ruby-identifier">beginning_of_month</span>.<span class="ruby-identifier">next_month</span>
172
+ <span class="ruby-identifier">last_file_date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">beginning_of_month</span>
173
+ <span class="ruby-keyword">while</span> <span class="ruby-identifier">run_file_date</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">last_file_date</span>
174
+ <span class="ruby-identifier">url</span> = <span class="ruby-node">&quot;https://dmf.ntis.gov/dmldata/monthly/MA#{run_file_date.strftime(&quot;%y%m%d&quot;)}&quot;</span>
175
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Loading file #{url}&quot;</span>
176
+ <span class="ruby-keyword">yield</span> <span class="ruby-node">&quot;Loading file #{url}&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
177
+ <span class="ruby-identifier">dmf</span> = <span class="ruby-constant">DeathMasterFileLoader</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;%Y-%m-%d&quot;</span>)) { <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> }
178
+ <span class="ruby-identifier">dmf</span>.<span class="ruby-identifier">load_file</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span>
179
+ <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
180
+ <span class="ruby-keyword">end</span>
181
+ <span class="ruby-identifier">run_file_date</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">month</span>
182
+ <span class="ruby-keyword">end</span>
183
+ <span class="ruby-keyword">end</span></pre>
184
+ </div><!-- load_update_files_from_web-source -->
185
+
186
+ </div>
187
+
188
+
189
+
190
+
191
+ </div><!-- load_update_files_from_web-method -->
192
+
193
+
194
+ <div id="method-c-new" class="method-detail ">
195
+
196
+ <div class="method-heading">
197
+ <span class="method-name">new</span><span
198
+ class="method-args">(path_or_url, file_as_of) { |status| ... }</span>
199
+ <span class="method-click-advice">click to toggle source</span>
200
+ </div>
201
+
202
+
203
+ <div class="method-description">
204
+
205
+ <p>path_or_url is the full path to the file to load on disk, or the url of an
206
+ update file. as_of is a string in the formatt YYYY-MM-DD for which the file
207
+ data is accurate.</p>
208
+
209
+
210
+
211
+ <div class="method-source-code" id="new-source">
212
+ <pre><span class="ruby-comment"># File lib/ssn_validator/models/death_master_file_loader.rb, line 11</span>
213
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">path_or_url</span>, <span class="ruby-identifier">file_as_of</span>)
214
+ <span class="ruby-ivar">@file_path_or_url</span> = <span class="ruby-identifier">path_or_url</span>
215
+ <span class="ruby-ivar">@file_as_of</span> = <span class="ruby-identifier">file_as_of</span>
216
+ <span class="ruby-identifier">valid?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> }
217
+ <span class="ruby-keyword">end</span></pre>
218
+ </div><!-- new-source -->
219
+
220
+ </div>
221
+
222
+
223
+
224
+
225
+ </div><!-- new-method -->
226
+
227
+
228
+ </section><!-- public-class-method-details -->
229
+
230
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
231
+ <h3 class="section-header">Public Instance Methods</h3>
232
+
233
+
234
+ <div id="method-i-get_file_from_web" class="method-detail ">
235
+
236
+ <div class="method-heading">
237
+ <span class="method-name">get_file_from_web</span><span
238
+ class="method-args">() { |"%d%% done (%d of %d)" % [(size * 100) / total, size, total]| ... }</span>
239
+ <span class="method-click-advice">click to toggle source</span>
240
+ </div>
241
+
242
+
243
+ <div class="method-description">
244
+
245
+
246
+
247
+
248
+
249
+ <div class="method-source-code" id="get_file_from_web-source">
250
+ <pre><span class="ruby-comment"># File lib/ssn_validator/models/death_master_file_loader.rb, line 47</span>
251
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_file_from_web</span>
252
+ <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-ivar">@file_path_or_url</span>)
253
+
254
+ <span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">request_uri</span>)
255
+ <span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-constant">SsnValidator</span><span class="ruby-operator">::</span><span class="ruby-constant">Ntis</span>.<span class="ruby-identifier">user_name</span>, <span class="ruby-constant">SsnValidator</span><span class="ruby-operator">::</span><span class="ruby-constant">Ntis</span>.<span class="ruby-identifier">password</span>)
256
+
257
+ <span class="ruby-identifier">proxy_addr</span>, <span class="ruby-identifier">proxy_port</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-string">'http_proxy'</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&quot;http://&quot;</span>, <span class="ruby-string">&quot;&quot;</span>).<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/:/</span>) <span class="ruby-keyword">if</span> <span class="ruby-constant">ENV</span>[<span class="ruby-string">'http_proxy'</span>]
258
+ <span class="ruby-identifier">proxy_user</span>, <span class="ruby-identifier">proxy_pass</span> = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">userinfo</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/:/</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">userinfo</span>
259
+ <span class="ruby-identifier">http</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Proxy</span>(<span class="ruby-identifier">proxy_addr</span>, <span class="ruby-identifier">proxy_port</span>, <span class="ruby-identifier">proxy_user</span>, <span class="ruby-identifier">proxy_pass</span>).<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>)
260
+
261
+ <span class="ruby-identifier">http</span>.<span class="ruby-identifier">use_ssl</span> = (<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">==</span> <span class="ruby-value">443</span>)
262
+ <span class="ruby-identifier">http</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_NONE</span>
263
+
264
+ <span class="ruby-identifier">csv_file</span> = <span class="ruby-constant">Tempfile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@file_path_or_url</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">'/'</span>).<span class="ruby-identifier">last</span>) <span class="ruby-comment"># create temp file for the raw file.</span>
265
+ <span class="ruby-identifier">http</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">res</span><span class="ruby-operator">|</span>
266
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid URL: #{@file_path_or_url}&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPNotFound</span>)
267
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Authorization Required: Invalid username or password. Set the variables SsnValidator::Ntis.user_name and SsnValidator::Ntis.password in your environment.rb file.&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPUnauthorized</span>)
268
+ <span class="ruby-identifier">size</span>, <span class="ruby-identifier">total</span> = <span class="ruby-value">0</span>, <span class="ruby-identifier">res</span>.<span class="ruby-identifier">header</span>[<span class="ruby-string">'Content-Length'</span>].<span class="ruby-identifier">to_i</span>
269
+ <span class="ruby-identifier">res</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">chunk</span><span class="ruby-operator">|</span>
270
+ <span class="ruby-identifier">size</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">size</span>
271
+ <span class="ruby-identifier">csv_file</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">chunk</span>
272
+ <span class="ruby-identifier">puts</span> <span class="ruby-string">&quot;%d%% done (%d of %d)&quot;</span> <span class="ruby-operator">%</span> [(<span class="ruby-identifier">size</span> * <span class="ruby-value">100</span>) <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>, <span class="ruby-identifier">size</span>, <span class="ruby-identifier">total</span>]
273
+ <span class="ruby-keyword">yield</span>(<span class="ruby-string">&quot;%d%% done (%d of %d)&quot;</span> <span class="ruby-operator">%</span> [(<span class="ruby-identifier">size</span> * <span class="ruby-value">100</span>) <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>, <span class="ruby-identifier">size</span>, <span class="ruby-identifier">total</span>]) <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
274
+ <span class="ruby-keyword">end</span>
275
+
276
+ <span class="ruby-keyword">end</span>
277
+
278
+ <span class="ruby-keyword">return</span> <span class="ruby-identifier">csv_file</span>.<span class="ruby-identifier">path</span>
279
+ <span class="ruby-keyword">end</span></pre>
280
+ </div><!-- get_file_from_web-source -->
281
+
282
+ </div>
283
+
284
+
285
+
286
+
287
+ </div><!-- get_file_from_web-method -->
288
+
289
+
290
+ <div id="method-i-load_file" class="method-detail ">
291
+
292
+ <div class="method-heading">
293
+ <span class="method-name">load_file</span><span
294
+ class="method-args">() { |"Converting file to csv format for Mysql import. This could take several minutes."| ... }</span>
295
+ <span class="method-click-advice">click to toggle source</span>
296
+ </div>
297
+
298
+
299
+ <div class="method-description">
300
+
301
+
302
+
303
+
304
+
305
+ <div class="method-source-code" id="load_file-source">
306
+ <pre><span class="ruby-comment"># File lib/ssn_validator/models/death_master_file_loader.rb, line 32</span>
307
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">load_file</span>
308
+
309
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionAdapters</span><span class="ruby-operator">::</span><span class="ruby-constant">MysqlAdapter</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionAdapters</span><span class="ruby-operator">::</span><span class="ruby-constant">JdbcAdapter</span>)
310
+ <span class="ruby-identifier">puts</span> <span class="ruby-string">&quot;Converting file to csv format for Mysql import. This could take several minutes.&quot;</span>
311
+ <span class="ruby-keyword">yield</span> <span class="ruby-string">&quot;Converting file to csv format for Mysql import. This could take several minutes.&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
312
+
313
+ <span class="ruby-identifier">csv_file</span> = <span class="ruby-identifier">convert_file_to_csv</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> }
314
+
315
+ <span class="ruby-identifier">bulk_mysql_update</span>(<span class="ruby-identifier">csv_file</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> }
316
+ <span class="ruby-keyword">else</span>
317
+ <span class="ruby-identifier">active_record_file_load</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> }
318
+ <span class="ruby-keyword">end</span>
319
+
320
+ <span class="ruby-keyword">end</span></pre>
321
+ </div><!-- load_file-source -->
322
+
323
+ </div>
324
+
325
+
326
+
327
+
328
+ </div><!-- load_file-method -->
329
+
330
+
331
+ <div id="method-i-valid-3F" class="method-detail ">
332
+
333
+ <div class="method-heading">
334
+ <span class="method-name">valid?</span><span
335
+ class="method-args">() { |status| ... }</span>
336
+ <span class="method-click-advice">click to toggle source</span>
337
+ </div>
338
+
339
+
340
+ <div class="method-description">
341
+
342
+
343
+
344
+
345
+
346
+ <div class="method-source-code" id="valid-3F-source">
347
+ <pre><span class="ruby-comment"># File lib/ssn_validator/models/death_master_file_loader.rb, line 17</span>
348
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">valid?</span>
349
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;path_or_url not specified&quot;</span>) <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@file_path_or_url</span>
350
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;as_of not specified&quot;</span>) <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@file_as_of</span>
351
+ <span class="ruby-identifier">max_as_of</span> = <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">maximum</span>(<span class="ruby-value">:as_of</span>)
352
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;A more recent file has already been processed. DB as_of date #{max_as_of}&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">max_as_of</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">max_as_of</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@file_as_of</span>.<span class="ruby-identifier">to_date</span>)
353
+
354
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-ivar">@file_path_or_url</span>)
355
+ <span class="ruby-ivar">@download_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-ivar">@file_path_or_url</span>)
356
+ <span class="ruby-keyword">elsif</span> <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-ivar">@file_path_or_url</span>).<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>)
357
+ <span class="ruby-ivar">@download_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">get_file_from_web</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> })
358
+ <span class="ruby-keyword">else</span>
359
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ENOENT</span>, <span class="ruby-ivar">@file_path_or_url</span>)
360
+ <span class="ruby-keyword">end</span>
361
+ <span class="ruby-keyword">end</span></pre>
362
+ </div><!-- valid-3F-source -->
363
+
364
+ </div>
365
+
366
+
367
+
368
+
369
+ </div><!-- valid-3F-method -->
370
+
371
+
372
+ </section><!-- public-instance-method-details -->
373
+
374
+ </section><!-- 5Buntitled-5D -->
375
+
376
+ </div><!-- documentation -->
377
+
378
+
379
+ <footer id="validator-badges">
380
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
381
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.11.
382
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
383
+ </footer>
384
+
data/rdoc/LICENSE.html ADDED
@@ -0,0 +1,116 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>LICENSE</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 class="file">
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="project-metadata">
47
+ <nav id="fileindex-section" class="section project-section">
48
+ <h3 class="section-header">Pages</h3>
49
+
50
+ <ul>
51
+
52
+ <li class="file"><a href="./LICENSE.html">LICENSE</a>
53
+
54
+ <li class="file"><a href="./README_rdoc.html">README</a>
55
+
56
+ </ul>
57
+ </nav>
58
+
59
+ <nav id="classindex-section" class="section project-section">
60
+ <h3 class="section-header">Class and Module Index</h3>
61
+
62
+ <ul class="link-list">
63
+
64
+ <li><a href="./SsnValidator.html">SsnValidator</a>
65
+
66
+ <li><a href="./SsnValidator/Ntis.html">SsnValidator::Ntis</a>
67
+
68
+ <li><a href="./SsnValidator/Ssn.html">SsnValidator::Ssn</a>
69
+
70
+ <li><a href="./DeathMasterFile.html">DeathMasterFile</a>
71
+
72
+ <li><a href="./DeathMasterFileLoader.html">DeathMasterFileLoader</a>
73
+
74
+ <li><a href="./SsnHighGroupCode.html">SsnHighGroupCode</a>
75
+
76
+ <li><a href="./SsnHighGroupCodeLoader.html">SsnHighGroupCodeLoader</a>
77
+
78
+ </ul>
79
+ </nav>
80
+
81
+ </div>
82
+ </nav>
83
+
84
+ <div id="documentation" class="description">
85
+
86
+ <p>Copyright © 2009 Kevin Tyll</p>
87
+
88
+ <p>Permission is hereby granted, free of charge, to any person obtaining a
89
+ copy of this software and associated documentation files (the
90
+ “Software”), to deal in the Software without restriction, including
91
+ without limitation the rights to use, copy, modify, merge, publish,
92
+ distribute, sublicense, and/or sell copies of the Software, and to permit
93
+ persons to whom the Software is furnished to do so, subject to the
94
+ following conditions:</p>
95
+
96
+ <p>The above copyright notice and this permission notice shall be included in
97
+ all copies or substantial portions of the Software.</p>
98
+
99
+ <p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
100
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
101
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
102
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
103
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
104
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
105
+ DEALINGS IN THE SOFTWARE.</p>
106
+
107
+ </div>
108
+
109
+
110
+
111
+ <footer id="validator-badges">
112
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
113
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.11.
114
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
115
+ </footer>
116
+