caliph 0.1.1 → 0.1.2

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,235 @@
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
+ File: README
8
+
9
+ &mdash; Documentation by YARD 0.8.7.4
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!file.README.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+ <span class="title">File: README</span>
36
+
37
+
38
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
+ </div>
40
+
41
+ <div id="search">
42
+
43
+ <a class="full_list_link" id="class_list_link"
44
+ href="class_list.html">
45
+ Class List
46
+ </a>
47
+
48
+ <a class="full_list_link" id="method_list_link"
49
+ href="method_list.html">
50
+ Method List
51
+ </a>
52
+
53
+ <a class="full_list_link" id="file_list_link"
54
+ href="file_list.html">
55
+ File List
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <iframe id="search_frame"></iframe>
63
+
64
+ <div id="content"><div id='filecontents'>
65
+ <h1 id="label-Caliph">Caliph</h1>
66
+
67
+ <p>Caliph - a Ruby tool for generating and executing command-line commands.</p>
68
+
69
+ <p>Does your Ruby script or app need to generate commands to run at the CLI,
70
+ to run with system() or similar? Want to generate them in a clean, testable
71
+ Ruby api? How about automatically capturing output, exit code, and other
72
+ goodies?</p>
73
+
74
+ <p>The first version of these classes were originally written as part of
75
+ Mattock by Judson Lester: <a
76
+ href="https://github.com/nyarly/mattock">github.com/nyarly/mattock</a></p>
77
+
78
+ <p><a href="https://codeclimate.com/github/LRDesign/Caliph"><img
79
+ src="https://codeclimate.com/github/LRDesign/Caliph.png"></a> <a
80
+ href="https://travis-ci.org/LRDesign/Caliph"><img
81
+ src="https://travis-ci.org/LRDesign/Caliph.svg?branch=master"></a> <a
82
+ href="https://gemnasium.com/LRDesign/Caliph"><img
83
+ src="https://gemnasium.com/LRDesign/Caliph.svg"></a></p>
84
+
85
+ <h2 id="label-Usage+Examples">Usage Examples</h2>
86
+
87
+ <h3 id="label-Create+a+command">Create a command</h3>
88
+
89
+ <pre class="code ruby"><code class="ruby"><span class='comment'># &#39;ls -la&#39;
90
+ </span> <span class='const'>Caliph</span><span class='op'>::</span><span class='const'>CommandLine</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ls</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-la</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
91
+
92
+ <span class='comment'># &#39;ls -la&#39;, another way
93
+ </span> <span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='const'>Caliph</span><span class='op'>::</span><span class='const'>CommandLine</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ls</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
94
+ <span class='id identifier rubyid_cmd'>cmd</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-la</span><span class='tstring_end'>&#39;</span></span></code></pre>
95
+
96
+ <h3 id="label-Mix+in+Caliph%3A%3ACommandLineDSL+for+abbreviated+syntax">Mix in Caliph::CommandLineDSL for abbreviated syntax</h3>
97
+
98
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_include'>include</span> <span class='const'>Caliph</span><span class='op'>::</span><span class='const'>CommandLineDSL</span>
99
+
100
+ <span class='comment'># synonymous with Caliph::CommandLine.new(&#39;cat&#39;, &#39;/etc/passwd&#39;)
101
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>cat</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/etc/passwd</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></code></pre>
102
+
103
+ <h3 id="label-Add+environment+variables">Add environment variables</h3>
104
+
105
+ <pre class="code ruby"><code class="ruby"><span class='comment'># RAILS_ENV=production rake db:migrate
106
+ </span> <span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rake</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>db:migrate</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
107
+ <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>RAILS_ENV</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>production</span></span></code></pre>
108
+
109
+ <h3 id="label-See+the+commands">See the commands</h3>
110
+
111
+ <p><code>Caliph::CommandLine#string_format</code> or <code>#to_s</code>
112
+ returns the entire command. <code>Caliph::CommandLine#command</code>
113
+ returns just the command portion without prepended environment variables,
114
+ which might be handy if you&#39;re passing the command to ssh or sudo and
115
+ need to handle ENV differently.</p>
116
+
117
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>java</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>my_file.jar</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
118
+ <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>JAVA_HOME</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>~/java_files</span><span class='tstring_end'>&#39;</span></span>
119
+
120
+ <span class='comment'># outputs &quot;JAVA_HOME=&#39;~/java_files&#39; java my_file.jar&quot;
121
+ </span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_string_format'>string_format</span> <span class='comment'># or .to_s
122
+ </span>
123
+ <span class='comment'># outputs &quot;java my_file.jar&quot;
124
+ </span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_command'>command</span></code></pre>
125
+
126
+ <h3 id="label-Chaining+commands">Chaining commands</h3>
127
+
128
+ <p><code>Caliph::CommandChain</code> and related classes implement chained
129
+ commands. If you&#39;ve mixed in <code>Caliph::CommandLineDSL</code>, you
130
+ can use operators &amp;, |, and - for conditional, pipe, and path-chaining,
131
+ respectively.</p>
132
+
133
+ <pre class="code ruby"><code class="ruby"><span class='comment'># Pipe Chain
134
+ </span> <span class='comment'># find . -name &#39;*.sw.&#39; | xargs rm
135
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>find</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-name &#39;*.sw.&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>|</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>xargs</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rm</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
136
+
137
+
138
+ <span class='comment'># &amp;&amp; - style conditional chain
139
+ </span> <span class='comment'># cd /tmp/trash &amp;&amp; rm -rf *
140
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/tmp/trash</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>&amp;</span> <span class='qwords_beg'>%w{</span><span class='tstring_content'>rm</span><span class='words_sep'> </span><span class='tstring_content'>-rf</span><span class='words_sep'> </span><span class='tstring_content'>*</span><span class='words_sep'>}</span>
141
+
142
+ <span class='comment'># Double-hyphen separated commands
143
+ </span> <span class='comment'># sudo -- gem install bundler
144
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>sudo</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>-</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>gem</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>install</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>bundler</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span></code></pre>
145
+
146
+ <h3 id="label-Redirecting+Output">Redirecting Output</h3>
147
+
148
+ <pre class="code ruby"><code class="ruby"><span class='comment'># redirect STDOUT
149
+ </span> <span class='comment'># echo &quot;foo&quot; 1&gt;some_file.txt
150
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>echo</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stdout'>redirect_stdout</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>some_file.txt</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
151
+
152
+ <span class='comment'># redirect STDERR
153
+ </span> <span class='comment'># echo &quot;foo&quot; 2&gt;error_file.txt
154
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>echo</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stderr'>redirect_stderr</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>error_file.txt</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
155
+
156
+ <span class='comment'># chain redirects
157
+ </span> <span class='comment'># curl http://LRDesign.com 1&gt;page.html 2&gt;progress.txt
158
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>curl</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>http://LRDesign.com</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stdout'>redirect_stdout</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>page.html</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stdin'>redirect_stdin</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>progress.txt</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
159
+
160
+ <span class='comment'># redirect STDOUT and STDERR to the same destination with one command
161
+ </span> <span class='comment'># rm -rf 1&gt;/dev/null 2&gt;/dev/null
162
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rm</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-rf</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_both'>redirect_both</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/dev/null</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></code></pre>
163
+
164
+ <h3 id="label-Execute+commands+and+capture+the+output">Execute commands and capture the output</h3>
165
+
166
+ <p>Several instance methods on <code>CommandLine</code> and
167
+ <code>CommandChain</code> are provided for executing commands.</p>
168
+ <ul><li>
169
+ <p><code>run</code> Run the command and wait for the result. Returns a
170
+ <code>CommandRunResult</code> instance.</p>
171
+ </li><li>
172
+ <p><code>execute</code> Same as <code>run</code>, but terser, with no
173
+ additional output added to STDOUT.</p>
174
+ </li><li>
175
+ <p><code>run_as_replacement</code> Run the command in a new process and kill
176
+ this process.</p>
177
+ </li><li>
178
+ <p><code>run_detached</code> Run the command as a new background process. It
179
+ can continue even if the caller terminates.</p>
180
+ </li><li>
181
+ <p><code>run_in_background</code> Run the command as a background process, but
182
+ kill it if the caller terminates</p>
183
+ </li></ul>
184
+
185
+ <pre class="code ruby"><code class="ruby"><span class='comment'># find all vim swap files and wait for result
186
+ </span> <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>find</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-name *.sw.&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_run'>run</span>
187
+
188
+ <span class='comment'># delete all vim swap files in a parallel process
189
+ </span> <span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>find</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-name &#39;*.sw.&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>|</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>xargs</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rm</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
190
+ <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_run_in_background'>run_in_background</span>
191
+
192
+ <span class='comment'># launch a server, terminating this process. Useful for wrapper scripts!
193
+ </span> <span class='id identifier rubyid_launcher'>launcher</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>pg_ctl</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>start -l</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>logfile</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
194
+ <span class='id identifier rubyid_launcher'>launcher</span><span class='period'>.</span><span class='id identifier rubyid_run_as_replacement'>run_as_replacement</span></code></pre>
195
+
196
+ <h3 id="label-Examine+the+results+of+a+command">Examine the results of a command</h3>
197
+
198
+ <p><code>Caliph::CommandLine#execute</code> returns a
199
+ <code>Caliph::CommandRunResult</code> instance.
200
+ <code>CommandRunResult</code> has the following useful instance methods:</p>
201
+ <ul><li>
202
+ <p><code>stdout</code> A String containing the contents of STDOUT.</p>
203
+ </li><li>
204
+ <p><code>stderr</code> A String containing the contents of STDERR.</p>
205
+ </li><li>
206
+ <p><code>exit_code</code> The exit code of the command</p>
207
+ </li><li>
208
+ <p><code>succeded?</code> True if <code>exit_code</code> is 0.</p>
209
+ </li><li>
210
+ <p><code>must_succeed!</code> Calls <code>fail</code> with an error message if
211
+ the command did not exit successfully.</p>
212
+ </li></ul>
213
+
214
+ <h2 id="label-Testing+code+that+uses+Caliph">Testing code that uses Caliph</h2>
215
+
216
+ <p>Caliph includes some useful classes for mocking out the command line
217
+ environment for purposes of testing. See
218
+ <code>Caliph::MockCommandResult</code> and <code>Caliph::CommandLine</code>
219
+ in lib/caliph/testing for more info.</p>
220
+
221
+ <p>Further documentation on testing coming soon!</p>
222
+
223
+ <h2 id="label-Credits">Credits</h2>
224
+
225
+ <p>Evan Dorn and Judson Lester of Logical Reality Design, Inc.</p>
226
+ </div></div>
227
+
228
+ <div id="footer">
229
+ Generated on Fri Jun 13 17:31:07 2014 by
230
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
231
+ 0.8.7.4 (ruby-2.0.0).
232
+ </div>
233
+
234
+ </body>
235
+ </html>
@@ -0,0 +1,56 @@
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
+ <title>File List</title>
19
+ <base id="base_target" target="_parent" />
20
+ </head>
21
+ <body>
22
+ <script type="text/javascript" charset="utf-8">
23
+ if (window.top.frames.main) {
24
+ document.getElementById('base_target').target = 'main';
25
+ document.body.className = 'frames';
26
+ }
27
+ </script>
28
+ <div id="content">
29
+ <h1 id="full_list_header">File List</h1>
30
+ <div id="nav">
31
+
32
+ <span><a target="_self" href="class_list.html">
33
+ Classes
34
+ </a></span>
35
+
36
+ <span><a target="_self" href="method_list.html">
37
+ Methods
38
+ </a></span>
39
+
40
+ <span><a target="_self" href="file_list.html">
41
+ Files
42
+ </a></span>
43
+
44
+ </div>
45
+ <div id="search">Search: <input type="text" /></div>
46
+
47
+ <ul id="full_list" class="file">
48
+
49
+
50
+ <li class="r1"><span class="object_link"><a href="index.html" title="README">README</a></a></li>
51
+
52
+
53
+ </ul>
54
+ </div>
55
+ </body>
56
+ </html>
data/doc/frames.html ADDED
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+ <title>Documentation by YARD 0.8.7.4</title>
8
+ </head>
9
+ <script type="text/javascript" charset="utf-8">
10
+ window.onload = function() {
11
+ var match = unescape(window.location.hash).match(/^#!(.+)/);
12
+ var name = match ? match[1] : 'index.html';
13
+ name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
14
+ document.writeln('<frameset cols="20%,*">' +
15
+ '<frame name="list" src="class_list.html" />' +
16
+ '<frame name="main" src="' + escape(name) + '" />' +
17
+ '</frameset>');
18
+ }
19
+ </script>
20
+ <noscript>
21
+ <frameset cols="20%,*">
22
+ <frame name="list" src="class_list.html" />
23
+ <frame name="main" src="index.html" />
24
+ </frameset>
25
+ </noscript>
26
+ </html>
data/doc/index.html ADDED
@@ -0,0 +1,235 @@
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
+ File: README
8
+
9
+ &mdash; Documentation by YARD 0.8.7.4
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!file.README.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+ <span class="title">File: README</span>
36
+
37
+
38
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
+ </div>
40
+
41
+ <div id="search">
42
+
43
+ <a class="full_list_link" id="class_list_link"
44
+ href="class_list.html">
45
+ Class List
46
+ </a>
47
+
48
+ <a class="full_list_link" id="method_list_link"
49
+ href="method_list.html">
50
+ Method List
51
+ </a>
52
+
53
+ <a class="full_list_link" id="file_list_link"
54
+ href="file_list.html">
55
+ File List
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <iframe id="search_frame"></iframe>
63
+
64
+ <div id="content"><div id='filecontents'>
65
+ <h1 id="label-Caliph">Caliph</h1>
66
+
67
+ <p>Caliph - a Ruby tool for generating and executing command-line commands.</p>
68
+
69
+ <p>Does your Ruby script or app need to generate commands to run at the CLI,
70
+ to run with system() or similar? Want to generate them in a clean, testable
71
+ Ruby api? How about automatically capturing output, exit code, and other
72
+ goodies?</p>
73
+
74
+ <p>The first version of these classes were originally written as part of
75
+ Mattock by Judson Lester: <a
76
+ href="https://github.com/nyarly/mattock">github.com/nyarly/mattock</a></p>
77
+
78
+ <p><a href="https://codeclimate.com/github/LRDesign/Caliph"><img
79
+ src="https://codeclimate.com/github/LRDesign/Caliph.png"></a> <a
80
+ href="https://travis-ci.org/LRDesign/Caliph"><img
81
+ src="https://travis-ci.org/LRDesign/Caliph.svg?branch=master"></a> <a
82
+ href="https://gemnasium.com/LRDesign/Caliph"><img
83
+ src="https://gemnasium.com/LRDesign/Caliph.svg"></a></p>
84
+
85
+ <h2 id="label-Usage+Examples">Usage Examples</h2>
86
+
87
+ <h3 id="label-Create+a+command">Create a command</h3>
88
+
89
+ <pre class="code ruby"><code class="ruby"><span class='comment'># &#39;ls -la&#39;
90
+ </span> <span class='const'>Caliph</span><span class='op'>::</span><span class='const'>CommandLine</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ls</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-la</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
91
+
92
+ <span class='comment'># &#39;ls -la&#39;, another way
93
+ </span> <span class='id identifier rubyid_cmd'>cmd</span> <span class='op'>=</span> <span class='const'>Caliph</span><span class='op'>::</span><span class='const'>CommandLine</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ls</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
94
+ <span class='id identifier rubyid_cmd'>cmd</span><span class='period'>.</span><span class='id identifier rubyid_options'>options</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-la</span><span class='tstring_end'>&#39;</span></span></code></pre>
95
+
96
+ <h3 id="label-Mix+in+Caliph%3A%3ACommandLineDSL+for+abbreviated+syntax">Mix in Caliph::CommandLineDSL for abbreviated syntax</h3>
97
+
98
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_include'>include</span> <span class='const'>Caliph</span><span class='op'>::</span><span class='const'>CommandLineDSL</span>
99
+
100
+ <span class='comment'># synonymous with Caliph::CommandLine.new(&#39;cat&#39;, &#39;/etc/passwd&#39;)
101
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>cat</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/etc/passwd</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></code></pre>
102
+
103
+ <h3 id="label-Add+environment+variables">Add environment variables</h3>
104
+
105
+ <pre class="code ruby"><code class="ruby"><span class='comment'># RAILS_ENV=production rake db:migrate
106
+ </span> <span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rake</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>db:migrate</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
107
+ <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>RAILS_ENV</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>production</span></span></code></pre>
108
+
109
+ <h3 id="label-See+the+commands">See the commands</h3>
110
+
111
+ <p><code>Caliph::CommandLine#string_format</code> or <code>#to_s</code>
112
+ returns the entire command. <code>Caliph::CommandLine#command</code>
113
+ returns just the command portion without prepended environment variables,
114
+ which might be handy if you&#39;re passing the command to ssh or sudo and
115
+ need to handle ENV differently.</p>
116
+
117
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>java</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>my_file.jar</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
118
+ <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>JAVA_HOME</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>~/java_files</span><span class='tstring_end'>&#39;</span></span>
119
+
120
+ <span class='comment'># outputs &quot;JAVA_HOME=&#39;~/java_files&#39; java my_file.jar&quot;
121
+ </span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_string_format'>string_format</span> <span class='comment'># or .to_s
122
+ </span>
123
+ <span class='comment'># outputs &quot;java my_file.jar&quot;
124
+ </span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_command'>command</span></code></pre>
125
+
126
+ <h3 id="label-Chaining+commands">Chaining commands</h3>
127
+
128
+ <p><code>Caliph::CommandChain</code> and related classes implement chained
129
+ commands. If you&#39;ve mixed in <code>Caliph::CommandLineDSL</code>, you
130
+ can use operators &amp;, |, and - for conditional, pipe, and path-chaining,
131
+ respectively.</p>
132
+
133
+ <pre class="code ruby"><code class="ruby"><span class='comment'># Pipe Chain
134
+ </span> <span class='comment'># find . -name &#39;*.sw.&#39; | xargs rm
135
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>find</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-name &#39;*.sw.&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>|</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>xargs</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rm</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
136
+
137
+
138
+ <span class='comment'># &amp;&amp; - style conditional chain
139
+ </span> <span class='comment'># cd /tmp/trash &amp;&amp; rm -rf *
140
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/tmp/trash</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>&amp;</span> <span class='qwords_beg'>%w{</span><span class='tstring_content'>rm</span><span class='words_sep'> </span><span class='tstring_content'>-rf</span><span class='words_sep'> </span><span class='tstring_content'>*</span><span class='words_sep'>}</span>
141
+
142
+ <span class='comment'># Double-hyphen separated commands
143
+ </span> <span class='comment'># sudo -- gem install bundler
144
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>sudo</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>-</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>gem</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>install</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>bundler</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span></code></pre>
145
+
146
+ <h3 id="label-Redirecting+Output">Redirecting Output</h3>
147
+
148
+ <pre class="code ruby"><code class="ruby"><span class='comment'># redirect STDOUT
149
+ </span> <span class='comment'># echo &quot;foo&quot; 1&gt;some_file.txt
150
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>echo</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stdout'>redirect_stdout</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>some_file.txt</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
151
+
152
+ <span class='comment'># redirect STDERR
153
+ </span> <span class='comment'># echo &quot;foo&quot; 2&gt;error_file.txt
154
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>echo</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stderr'>redirect_stderr</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>error_file.txt</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
155
+
156
+ <span class='comment'># chain redirects
157
+ </span> <span class='comment'># curl http://LRDesign.com 1&gt;page.html 2&gt;progress.txt
158
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>curl</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>http://LRDesign.com</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stdout'>redirect_stdout</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>page.html</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_stdin'>redirect_stdin</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>progress.txt</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
159
+
160
+ <span class='comment'># redirect STDOUT and STDERR to the same destination with one command
161
+ </span> <span class='comment'># rm -rf 1&gt;/dev/null 2&gt;/dev/null
162
+ </span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rm</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-rf</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_redirect_both'>redirect_both</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/dev/null</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></code></pre>
163
+
164
+ <h3 id="label-Execute+commands+and+capture+the+output">Execute commands and capture the output</h3>
165
+
166
+ <p>Several instance methods on <code>CommandLine</code> and
167
+ <code>CommandChain</code> are provided for executing commands.</p>
168
+ <ul><li>
169
+ <p><code>run</code> Run the command and wait for the result. Returns a
170
+ <code>CommandRunResult</code> instance.</p>
171
+ </li><li>
172
+ <p><code>execute</code> Same as <code>run</code>, but terser, with no
173
+ additional output added to STDOUT.</p>
174
+ </li><li>
175
+ <p><code>run_as_replacement</code> Run the command in a new process and kill
176
+ this process.</p>
177
+ </li><li>
178
+ <p><code>run_detached</code> Run the command as a new background process. It
179
+ can continue even if the caller terminates.</p>
180
+ </li><li>
181
+ <p><code>run_in_background</code> Run the command as a background process, but
182
+ kill it if the caller terminates</p>
183
+ </li></ul>
184
+
185
+ <pre class="code ruby"><code class="ruby"><span class='comment'># find all vim swap files and wait for result
186
+ </span> <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>find</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-name *.sw.&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_run'>run</span>
187
+
188
+ <span class='comment'># delete all vim swap files in a parallel process
189
+ </span> <span class='id identifier rubyid_command'>command</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>find</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-name &#39;*.sw.&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>|</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>xargs</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>rm</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
190
+ <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_run_in_background'>run_in_background</span>
191
+
192
+ <span class='comment'># launch a server, terminating this process. Useful for wrapper scripts!
193
+ </span> <span class='id identifier rubyid_launcher'>launcher</span> <span class='op'>=</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>pg_ctl</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>start -l</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>logfile</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
194
+ <span class='id identifier rubyid_launcher'>launcher</span><span class='period'>.</span><span class='id identifier rubyid_run_as_replacement'>run_as_replacement</span></code></pre>
195
+
196
+ <h3 id="label-Examine+the+results+of+a+command">Examine the results of a command</h3>
197
+
198
+ <p><code>Caliph::CommandLine#execute</code> returns a
199
+ <code>Caliph::CommandRunResult</code> instance.
200
+ <code>CommandRunResult</code> has the following useful instance methods:</p>
201
+ <ul><li>
202
+ <p><code>stdout</code> A String containing the contents of STDOUT.</p>
203
+ </li><li>
204
+ <p><code>stderr</code> A String containing the contents of STDERR.</p>
205
+ </li><li>
206
+ <p><code>exit_code</code> The exit code of the command</p>
207
+ </li><li>
208
+ <p><code>succeded?</code> True if <code>exit_code</code> is 0.</p>
209
+ </li><li>
210
+ <p><code>must_succeed!</code> Calls <code>fail</code> with an error message if
211
+ the command did not exit successfully.</p>
212
+ </li></ul>
213
+
214
+ <h2 id="label-Testing+code+that+uses+Caliph">Testing code that uses Caliph</h2>
215
+
216
+ <p>Caliph includes some useful classes for mocking out the command line
217
+ environment for purposes of testing. See
218
+ <code>Caliph::MockCommandResult</code> and <code>Caliph::CommandLine</code>
219
+ in lib/caliph/testing for more info.</p>
220
+
221
+ <p>Further documentation on testing coming soon!</p>
222
+
223
+ <h2 id="label-Credits">Credits</h2>
224
+
225
+ <p>Evan Dorn and Judson Lester of Logical Reality Design, Inc.</p>
226
+ </div></div>
227
+
228
+ <div id="footer">
229
+ Generated on Fri Jun 13 17:31:07 2014 by
230
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
231
+ 0.8.7.4 (ruby-2.0.0).
232
+ </div>
233
+
234
+ </body>
235
+ </html>