sidekick 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -34,11 +34,11 @@ end
34
34
  =end
35
35
 
36
36
  require 'rocco/tasks'
37
- Rocco::make 'annotated/'
37
+ Rocco::make 'website/'
38
38
 
39
39
  desc 'Build docco'
40
40
  task :docs => [:rocco, 'website/index.html']
41
- directory 'annotated/'
41
+ directory 'website/'
42
42
 
43
43
  # Make index.html a copy of rocco.html
44
44
  file 'website/index.html' => 'website/sidekick.html' do |f|
@@ -48,6 +48,4 @@ end
48
48
  CLEAN.include 'website/index.html'
49
49
  task :doc => :docs
50
50
 
51
- # GITHUB PAGES ===============================================================
52
-
53
51
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
@@ -23,7 +23,7 @@ module Sidekick::Helpers::System
23
23
 
24
24
  def needs(gem_name, reason)
25
25
  unless gem_load?(gem_name)
26
- ::Sidekick.stop "You must install the #{gem_name} gem #{reason}."
26
+ abort "You must install the #{gem_name} gem #{reason}."
27
27
  end
28
28
  end
29
29
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 0
9
- version: 0.6.0
8
+ - 1
9
+ version: 0.6.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jostein Berre Eliassen,
@@ -74,12 +74,6 @@ files:
74
74
  - README.textile
75
75
  - Rakefile
76
76
  - VERSION
77
- - annotated/helpers.html
78
- - annotated/index.html
79
- - annotated/lib/sidekick.html
80
- - annotated/sidekick.html
81
- - annotated/triggers.html
82
- - annotated/util.html
83
77
  - bin/sidekick
84
78
  - lib/sidekick.rb
85
79
  - lib/sidekick/helpers/compile.rb
@@ -1,143 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
- <title>helpers.rb</title>
6
- <link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
7
- </head>
8
- <body>
9
- <div id='container'>
10
- <div id="background"></div>
11
- <div id="jump_to">
12
- Jump To &hellip;
13
- <div id="jump_wrapper">
14
- <div id="jump_page">
15
- <a class="source" href="sidekick.html">sidekick.rb</a>
16
- <a class="source" href="helpers.html">helpers.rb</a>
17
- <a class="source" href="util.html">util.rb</a>
18
- <a class="source" href="triggers.html">triggers.rb</a>
19
- </div>
20
- </div>
21
- </div>
22
- <table cellspacing=0 cellpadding=0>
23
- <thead>
24
- <tr>
25
- <th class=docs><h1>helpers.rb</h1></th>
26
- <th class=code></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <tr id='section-1'>
31
- <td class=docs>
32
- <div class="octowrap">
33
- <a class="octothorpe" href="#section-1">#</a>
34
- </div>
35
-
36
- </td>
37
- <td class=code>
38
- <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;fileutils&#39;</span>
39
- <span class="nb">require</span> <span class="s1">&#39;rbconfig&#39;</span>
40
- <span class="nb">require</span> <span class="s1">&#39;tilt&#39;</span></pre></div>
41
- </td>
42
- </tr>
43
- <tr id='section-2'>
44
- <td class=docs>
45
- <div class="octowrap">
46
- <a class="octothorpe" href="#section-2">#</a>
47
- </div>
48
- <p> default helpers</p>
49
- </td>
50
- <td class=code>
51
- <div class='highlight'><pre><span class="k">module</span> <span class="nn">Sidekick::Helpers</span></pre></div>
52
- </td>
53
- </tr>
54
- <tr id='section-3'>
55
- <td class=docs>
56
- <div class="octowrap">
57
- <a class="octothorpe" href="#section-3">#</a>
58
- </div>
59
- <p> system</p>
60
- </td>
61
- <td class=code>
62
- <div class='highlight'><pre> <span class="nb">require</span> <span class="s1">&#39;sidekick/helpers/util&#39;</span>
63
- <span class="kp">include</span> <span class="no">Util</span>
64
-
65
- <span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="n">str</span><span class="p">)</span>
66
- <span class="nb">puts</span> <span class="s1">&#39; -&gt; &#39;</span> <span class="o">+</span> <span class="n">str</span>
67
- <span class="k">end</span>
68
-
69
- <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="o">*</span><span class="n">prms</span><span class="p">)</span>
70
- <span class="no">Sidekick</span><span class="o">.</span><span class="n">stop</span><span class="p">(</span><span class="o">*</span><span class="n">prms</span><span class="p">)</span>
71
- <span class="k">end</span></pre></div>
72
- </td>
73
- </tr>
74
- <tr id='section-4'>
75
- <td class=docs>
76
- <div class="octowrap">
77
- <a class="octothorpe" href="#section-4">#</a>
78
- </div>
79
- <p> notifications</p>
80
- </td>
81
- <td class=code>
82
- <div class='highlight'><pre> <span class="k">def</span> <span class="nf">notify</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s1">&#39;Sidekick&#39;</span><span class="p">)</span>
83
-
84
- <span class="n">gems</span> <span class="o">=</span> <span class="p">{</span><span class="ss">:linux</span> <span class="o">=&gt;</span> <span class="s1">&#39;libnotify&#39;</span><span class="p">,</span> <span class="ss">:darwin</span> <span class="o">=&gt;</span> <span class="s1">&#39;growl&#39;</span><span class="p">}</span>
85
-
86
- <span class="n">stop</span><span class="p">(</span><span class="s1">&#39;Notifications not supported.&#39;</span><span class="p">)</span> <span class="k">unless</span> <span class="n">platform_load?</span><span class="p">(</span>
87
- <span class="n">gems</span><span class="p">,</span> <span class="s1">&#39;notifications&#39;</span><span class="p">)</span>
88
- <span class="k">case</span> <span class="n">platform</span>
89
- <span class="k">when</span> <span class="ss">:linux</span>
90
- <span class="no">Libnotify</span><span class="o">.</span><span class="n">show</span> <span class="ss">:body</span> <span class="o">=&gt;</span> <span class="n">message</span><span class="p">,</span> <span class="ss">:summary</span> <span class="o">=&gt;</span> <span class="n">title</span>
91
- <span class="k">when</span> <span class="ss">:darwin</span>
92
- <span class="no">Growl</span><span class="o">.</span><span class="n">notify</span> <span class="n">message</span><span class="p">,</span> <span class="ss">:title</span> <span class="o">=&gt;</span> <span class="n">title</span><span class="p">,</span> <span class="ss">:name</span> <span class="o">=&gt;</span> <span class="s1">&#39;Sidekick&#39;</span>
93
- <span class="k">end</span>
94
- <span class="k">end</span>
95
-
96
- <span class="k">def</span> <span class="nf">sh</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
97
- <span class="n">log</span> <span class="n">cmd</span>
98
- <span class="nb">puts</span> <span class="n">result</span> <span class="o">=</span> <span class="sb">`</span><span class="si">#{</span><span class="n">cmd</span><span class="si">}</span><span class="sb">`</span>
99
- <span class="n">result</span>
100
- <span class="k">end</span>
101
-
102
- <span class="k">def</span> <span class="nf">restart_passenger</span>
103
- <span class="no">FileUtils</span><span class="o">.</span><span class="n">touch</span> <span class="s1">&#39;./tmp/restart.txt&#39;</span>
104
- <span class="n">log</span> <span class="s1">&#39;restarted passenger&#39;</span>
105
- <span class="k">end</span></pre></div>
106
- </td>
107
- </tr>
108
- <tr id='section-5'>
109
- <td class=docs>
110
- <div class="octowrap">
111
- <a class="octothorpe" href="#section-5">#</a>
112
- </div>
113
- <p> watches for changes matching the source glob,
114
- compiles using the tilt gem, and saves to
115
- target. Target is interpolated for :name</p>
116
-
117
- </td>
118
- <td class=code>
119
- <div class='highlight'><pre> <span class="k">def</span> <span class="nf">auto_compile</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
120
- <span class="n">watch</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">files</span><span class="o">|</span>
121
- <span class="n">files</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">file</span><span class="o">|</span>
122
- <span class="k">if</span> <span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="n">file</span><span class="p">)</span>
123
- <span class="k">begin</span>
124
- <span class="n">t</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">gsub</span><span class="p">(</span><span class="s1">&#39;:name&#39;</span><span class="p">,</span> <span class="no">File</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;.*&#39;</span><span class="p">))</span>
125
- <span class="no">File</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">f</span><span class="o">|</span>
126
- <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="no">Tilt</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">file</span><span class="p">)</span><span class="o">.</span><span class="n">render</span><span class="p">)</span>
127
- <span class="k">end</span>
128
- <span class="n">log</span> <span class="s2">&quot;render </span><span class="si">#{</span><span class="n">file</span><span class="si">}</span><span class="s2"> =&gt; </span><span class="si">#{</span><span class="n">t</span><span class="si">}</span><span class="s2">&quot;</span>
129
- <span class="k">rescue</span> <span class="no">Exception</span> <span class="o">=&gt;</span> <span class="n">e</span>
130
- <span class="n">notify</span> <span class="s2">&quot;Error in </span><span class="si">#{</span><span class="n">file</span><span class="si">}</span><span class="s2">:</span><span class="se">\n</span><span class="si">#{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span>
131
- <span class="n">log</span> <span class="s2">&quot;Error in </span><span class="si">#{</span><span class="n">file</span><span class="si">}</span><span class="s2">:</span><span class="se">\n</span><span class="si">#{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span>
132
- <span class="k">end</span>
133
- <span class="k">end</span>
134
- <span class="k">end</span>
135
- <span class="k">end</span>
136
- <span class="k">end</span>
137
-
138
- <span class="k">end</span></pre></div>
139
- </td>
140
- </tr>
141
- </table>
142
- </div>
143
- </body>
@@ -1,155 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
- <title>sidekick.rb</title>
6
- <link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
7
- </head>
8
- <body>
9
- <div id='container'>
10
- <div id="background"></div>
11
- <div id="jump_to">
12
- Jump To &hellip;
13
- <div id="jump_wrapper">
14
- <div id="jump_page">
15
- <a class="source" href="sidekick.html">sidekick.rb</a>
16
- <a class="source" href="helpers.html">helpers.rb</a>
17
- <a class="source" href="util.html">util.rb</a>
18
- <a class="source" href="triggers.html">triggers.rb</a>
19
- </div>
20
- </div>
21
- </div>
22
- <table cellspacing=0 cellpadding=0>
23
- <thead>
24
- <tr>
25
- <th class=docs><h1>sidekick.rb</h1></th>
26
- <th class=code></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <tr id='section-1'>
31
- <td class=docs>
32
- <div class="octowrap">
33
- <a class="octothorpe" href="#section-1">#</a>
34
- </div>
35
- <p> <em>Sidekick</em> is a simple event driven background assistant. Among other things, you can use it to automatically compile assets, test code, restart servers and so on &ndash; as prescribed per project, in a <code>.sidekick</code> file. It is powered by EventMachine and Tilt.</p>
36
-
37
- <p> This is the annotated source code. See the <a href="http://github.com/jbe/sidekick#readme">README</a> too.</p>
38
-
39
- <hr />
40
-
41
- <p> Sidekick basically helps you do two things:</p>
42
-
43
- <p> &mdash; <em>Define</em> named triggers, such as saying that <code>watch(glob)</code> means doing something when a file matching <code>glob</code> changes, or that <code>every(duration)</code> means doing something every <code>duration</code> seconds.</p>
44
-
45
- <p> &mdash; <em>Use</em> the defined triggers with callbacks, such as <code>watch(**.rb) { notify 'Code change' }</code></p>
46
- </td>
47
- <td class=code>
48
- <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;fileutils&#39;</span>
49
- <span class="nb">require</span> <span class="s1">&#39;eventmachine&#39;</span>
50
-
51
- <span class="k">module</span> <span class="nn">Sidekick</span></pre></div>
52
- </td>
53
- </tr>
54
- <tr id='section-2'>
55
- <td class=docs>
56
- <div class="octowrap">
57
- <a class="octothorpe" href="#section-2">#</a>
58
- </div>
59
- <p> This core functionality is provided by <code>Sidekick::Triggers</code>.</p>
60
-
61
- <p> New triggers can be defined by calling <code>Sidekick::Triggers.register(:trigger_name) { ... }</code>.</p>
62
-
63
- <p>Basically, the job of a trigger definition is to take the parameters and the block from a call in <code>.sidekick</code> and use it to hook into EventMachine in some way. &mdash; Just have a look at the <a href="http://github.com/jbe/sidekick/blob/master/lib/sidekick/triggers.rb">default trigger library</a>.</p>
64
-
65
- <p> By using Ruby&rsquo;s <code>method_missing</code>, we can forward method calls to the registered trigger definitions. Any module can thereby extend the <code>Triggers</code> module in order to expose the defined triggers as if they were methods.</p>
66
- </td>
67
- <td class=code>
68
- <div class='highlight'><pre> <span class="k">module</span> <span class="nn">Triggers</span>
69
- <span class="vc">@@triggers</span> <span class="o">=</span> <span class="p">{}</span>
70
-
71
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">register</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>
72
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="o">=</span> <span class="n">block</span>
73
- <span class="k">end</span>
74
-
75
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">log</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="c1"># used by triggers</span>
76
- <span class="nb">puts</span> <span class="n">str</span>
77
- <span class="k">end</span>
78
-
79
- <span class="k">def</span> <span class="nf">method_missing</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blk</span><span class="p">)</span>
80
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="p">?</span>
81
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">].</span><span class="n">call</span><span class="p">(</span><span class="n">blk</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="p">:</span> <span class="k">super</span>
82
- <span class="k">end</span>
83
-
84
- <span class="k">def</span> <span class="nf">respond_to?</span><span class="p">(</span><span class="nb">method</span><span class="p">)</span>
85
- <span class="k">super</span> <span class="o">||</span> <span class="o">!!</span><span class="vc">@@triggers</span><span class="o">[</span><span class="nb">method</span><span class="o">]</span>
86
- <span class="k">end</span>
87
-
88
- <span class="k">end</span></pre></div>
89
- </td>
90
- </tr>
91
- <tr id='section-3'>
92
- <td class=docs>
93
- <div class="octowrap">
94
- <a class="octothorpe" href="#section-3">#</a>
95
- </div>
96
- <p> A default library of triggers and helpers is included..</p>
97
- </td>
98
- <td class=code>
99
- <div class='highlight'><pre> <span class="nb">require</span> <span class="s1">&#39;sidekick/triggers&#39;</span>
100
- <span class="nb">require</span> <span class="s1">&#39;sidekick/helpers&#39;</span></pre></div>
101
- </td>
102
- </tr>
103
- <tr id='section-4'>
104
- <td class=docs>
105
- <div class="octowrap">
106
- <a class="octothorpe" href="#section-4">#</a>
107
- </div>
108
- <p> The <code>.sidekick</code> file is evaluated in a <code>Sidekick::Context</code> module, which exposes DSL style methods by extending <code>Sidekick::Triggers</code> and <code>Sidekick::Helpers</code>.</p>
109
- </td>
110
- <td class=code>
111
- <div class='highlight'><pre> <span class="no">Context</span> <span class="o">=</span> <span class="no">Module</span><span class="o">.</span><span class="n">new</span>
112
- <span class="no">Context</span><span class="o">.</span><span class="n">extend</span> <span class="no">Triggers</span>
113
- <span class="no">Context</span><span class="o">.</span><span class="n">extend</span> <span class="no">Helpers</span></pre></div>
114
- </td>
115
- </tr>
116
- <tr id='section-5'>
117
- <td class=docs>
118
- <div class="octowrap">
119
- <a class="octothorpe" href="#section-5">#</a>
120
- </div>
121
- <p> The <code>Sidekick.run!</code> method reads and applies the <code>.sidekick</code> file, wrapping the setup phase inside <code>EM.run { .. }</code>, and thus begins the event loop.</p>
122
-
123
- </td>
124
- <td class=code>
125
- <div class='highlight'><pre> <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">run!</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;.sidekick&#39;</span><span class="p">)</span>
126
- <span class="n">ensure_config_exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
127
-
128
- <span class="no">Signal</span><span class="o">.</span><span class="n">trap</span><span class="p">(</span><span class="ss">:INT</span><span class="p">)</span> <span class="p">{</span> <span class="n">stop</span> <span class="p">}</span>
129
-
130
- <span class="no">EventMachine</span><span class="o">.</span><span class="n">run</span> <span class="k">do</span>
131
- <span class="no">Context</span><span class="o">.</span><span class="n">module_eval</span><span class="p">(</span>
132
- <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">f</span><span class="o">|</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span> <span class="p">},</span> <span class="n">path</span> <span class="p">)</span>
133
- <span class="k">end</span>
134
- <span class="k">end</span>
135
-
136
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">ensure_config_exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
137
- <span class="k">unless</span> <span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
138
- <span class="nb">puts</span> <span class="s1">&#39;Generate new sidekick file? (Y/n)&#39;</span>
139
- <span class="nb">gets</span> <span class="o">=~</span> <span class="sr">/^N|n/</span> <span class="p">?</span> <span class="nb">exit</span> <span class="p">:</span>
140
- <span class="no">FileUtils</span><span class="o">.</span><span class="n">cp</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">expand_path</span><span class="p">(</span><span class="s1">&#39;../template&#39;</span><span class="p">,</span>
141
- <span class="bp">__FILE__</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
142
- <span class="k">end</span>
143
- <span class="k">end</span>
144
-
145
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">stop</span><span class="p">(</span><span class="n">msg</span><span class="o">=</span><span class="kp">false</span><span class="p">)</span>
146
- <span class="no">EventMachine</span><span class="o">.</span><span class="n">stop</span>
147
- <span class="nb">puts</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">#{</span><span class="n">msg</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">msg</span>
148
- <span class="k">end</span>
149
-
150
- <span class="k">end</span></pre></div>
151
- </td>
152
- </tr>
153
- </table>
154
- </div>
155
- </body>
@@ -1,144 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
- <title>sidekick.rb</title>
6
- <link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
7
- </head>
8
- <body>
9
- <div id='container'>
10
- <div id="background"></div>
11
- <table cellspacing=0 cellpadding=0>
12
- <thead>
13
- <tr>
14
- <th class=docs><h1>sidekick.rb</h1></th>
15
- <th class=code></th>
16
- </tr>
17
- </thead>
18
- <tbody>
19
- <tr id='section-1'>
20
- <td class=docs>
21
- <div class="octowrap">
22
- <a class="octothorpe" href="#section-1">#</a>
23
- </div>
24
- <p> <em>Sidekick</em> is a simple event driven background assistant. Among other things, you can use it to automatically compile assets, test code, restart servers and so on &ndash; as prescribed per project, in a <code>.sidekick</code> file. It is powered by EventMachine and Tilt.</p>
25
-
26
- <p> This is the annotated source code. See the <a href="http://github.com/jbe/sidekick#readme">README</a> too.</p>
27
-
28
- <hr />
29
-
30
- <p> Sidekick basically helps you do two things:</p>
31
-
32
- <p> &mdash; <em>Define</em> named triggers, such as saying that <code>watch(glob)</code> means doing something when a file matching <code>glob</code> changes, or that <code>every(duration)</code> means doing something every <code>duration</code> seconds.</p>
33
-
34
- <p> &mdash; <em>Use</em> the defined triggers with callbacks, such as <code>watch(**.rb) { notify 'Code change' }</code></p>
35
- </td>
36
- <td class=code>
37
- <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;fileutils&#39;</span>
38
- <span class="nb">require</span> <span class="s1">&#39;eventmachine&#39;</span>
39
-
40
- <span class="k">module</span> <span class="nn">Sidekick</span></pre></div>
41
- </td>
42
- </tr>
43
- <tr id='section-2'>
44
- <td class=docs>
45
- <div class="octowrap">
46
- <a class="octothorpe" href="#section-2">#</a>
47
- </div>
48
- <p> This core functionality is provided by <code>Sidekick::Triggers</code>.</p>
49
-
50
- <p> New triggers can be defined by calling <code>Sidekick::Triggers.register(:trigger_name) { ... }</code>.</p>
51
-
52
- <p>Basically, the job of a trigger definition is to take the parameters and the block from a call in <code>.sidekick</code> and use it to hook into EventMachine in some way. &mdash; Just have a look at the <a href="http://github.com/jbe/sidekick/blob/master/lib/sidekick/triggers.rb">default trigger library</a>.</p>
53
-
54
- <p> By using Ruby&rsquo;s <code>method_missing</code>, we can forward method calls to the registered trigger definitions. Any module can thereby extend the <code>Triggers</code> module in order to expose the defined triggers as if they were methods.</p>
55
- </td>
56
- <td class=code>
57
- <div class='highlight'><pre> <span class="k">module</span> <span class="nn">Triggers</span>
58
- <span class="vc">@@triggers</span> <span class="o">=</span> <span class="p">{}</span>
59
-
60
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">register</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>
61
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="o">=</span> <span class="n">block</span>
62
- <span class="k">end</span>
63
-
64
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">log</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="c1"># used by triggers</span>
65
- <span class="nb">puts</span> <span class="n">str</span>
66
- <span class="k">end</span>
67
-
68
- <span class="k">def</span> <span class="nf">method_missing</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blk</span><span class="p">)</span>
69
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="p">?</span>
70
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">].</span><span class="n">call</span><span class="p">(</span><span class="n">blk</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="p">:</span> <span class="k">super</span>
71
- <span class="k">end</span>
72
-
73
- <span class="k">def</span> <span class="nf">respond_to?</span><span class="p">(</span><span class="nb">method</span><span class="p">)</span>
74
- <span class="k">super</span> <span class="o">||</span> <span class="o">!!</span><span class="vc">@@triggers</span><span class="o">[</span><span class="nb">method</span><span class="o">]</span>
75
- <span class="k">end</span>
76
-
77
- <span class="k">end</span></pre></div>
78
- </td>
79
- </tr>
80
- <tr id='section-3'>
81
- <td class=docs>
82
- <div class="octowrap">
83
- <a class="octothorpe" href="#section-3">#</a>
84
- </div>
85
- <p> A default library of triggers and helpers is included..</p>
86
- </td>
87
- <td class=code>
88
- <div class='highlight'><pre> <span class="nb">require</span> <span class="s1">&#39;sidekick/triggers&#39;</span>
89
- <span class="nb">require</span> <span class="s1">&#39;sidekick/helpers&#39;</span></pre></div>
90
- </td>
91
- </tr>
92
- <tr id='section-4'>
93
- <td class=docs>
94
- <div class="octowrap">
95
- <a class="octothorpe" href="#section-4">#</a>
96
- </div>
97
- <p> The <code>.sidekick</code> file is evaluated in a <code>Sidekick::Context</code> module, which exposes DSL style methods by extending <code>Sidekick::Triggers</code> and <code>Sidekick::Helpers</code>.</p>
98
- </td>
99
- <td class=code>
100
- <div class='highlight'><pre> <span class="no">Context</span> <span class="o">=</span> <span class="no">Module</span><span class="o">.</span><span class="n">new</span>
101
- <span class="no">Context</span><span class="o">.</span><span class="n">extend</span> <span class="no">Triggers</span>
102
- <span class="no">Context</span><span class="o">.</span><span class="n">extend</span> <span class="no">Helpers</span></pre></div>
103
- </td>
104
- </tr>
105
- <tr id='section-5'>
106
- <td class=docs>
107
- <div class="octowrap">
108
- <a class="octothorpe" href="#section-5">#</a>
109
- </div>
110
- <p> The <code>Sidekick.run!</code> method reads and applies the <code>.sidekick</code> file, wrapping the setup phase inside <code>EM.run { .. }</code>, and thus begins the event loop.</p>
111
-
112
- </td>
113
- <td class=code>
114
- <div class='highlight'><pre> <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">run!</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;.sidekick&#39;</span><span class="p">)</span>
115
- <span class="n">ensure_config_exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
116
-
117
- <span class="no">Signal</span><span class="o">.</span><span class="n">trap</span><span class="p">(</span><span class="ss">:INT</span><span class="p">)</span> <span class="p">{</span> <span class="n">stop</span> <span class="p">}</span>
118
-
119
- <span class="no">EventMachine</span><span class="o">.</span><span class="n">run</span> <span class="k">do</span>
120
- <span class="no">Context</span><span class="o">.</span><span class="n">module_eval</span><span class="p">(</span>
121
- <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">f</span><span class="o">|</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span> <span class="p">},</span> <span class="n">path</span> <span class="p">)</span>
122
- <span class="k">end</span>
123
- <span class="k">end</span>
124
-
125
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">ensure_config_exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
126
- <span class="k">unless</span> <span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
127
- <span class="nb">puts</span> <span class="s1">&#39;Generate new sidekick file? (Y/n)&#39;</span>
128
- <span class="nb">gets</span> <span class="o">=~</span> <span class="sr">/^N|n/</span> <span class="p">?</span> <span class="nb">exit</span> <span class="p">:</span>
129
- <span class="no">FileUtils</span><span class="o">.</span><span class="n">cp</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">expand_path</span><span class="p">(</span><span class="s1">&#39;../template&#39;</span><span class="p">,</span>
130
- <span class="bp">__FILE__</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
131
- <span class="k">end</span>
132
- <span class="k">end</span>
133
-
134
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">stop</span><span class="p">(</span><span class="n">msg</span><span class="o">=</span><span class="kp">false</span><span class="p">)</span>
135
- <span class="no">EventMachine</span><span class="o">.</span><span class="n">stop</span>
136
- <span class="nb">puts</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">#{</span><span class="n">msg</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">msg</span>
137
- <span class="k">end</span>
138
-
139
- <span class="k">end</span></pre></div>
140
- </td>
141
- </tr>
142
- </table>
143
- </div>
144
- </body>
@@ -1,155 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
- <title>sidekick.rb</title>
6
- <link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
7
- </head>
8
- <body>
9
- <div id='container'>
10
- <div id="background"></div>
11
- <div id="jump_to">
12
- Jump To &hellip;
13
- <div id="jump_wrapper">
14
- <div id="jump_page">
15
- <a class="source" href="sidekick.html">sidekick.rb</a>
16
- <a class="source" href="helpers.html">helpers.rb</a>
17
- <a class="source" href="util.html">util.rb</a>
18
- <a class="source" href="triggers.html">triggers.rb</a>
19
- </div>
20
- </div>
21
- </div>
22
- <table cellspacing=0 cellpadding=0>
23
- <thead>
24
- <tr>
25
- <th class=docs><h1>sidekick.rb</h1></th>
26
- <th class=code></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <tr id='section-1'>
31
- <td class=docs>
32
- <div class="octowrap">
33
- <a class="octothorpe" href="#section-1">#</a>
34
- </div>
35
- <p> <em>Sidekick</em> is a simple event driven background assistant. Among other things, you can use it to automatically compile assets, test code, restart servers and so on &ndash; as prescribed per project, in a <code>.sidekick</code> file. It is powered by EventMachine and Tilt.</p>
36
-
37
- <p> This is the annotated source code. See the <a href="http://github.com/jbe/sidekick#readme">README</a> too.</p>
38
-
39
- <hr />
40
-
41
- <p> Sidekick basically helps you do two things:</p>
42
-
43
- <p> &mdash; <em>Define</em> named triggers, such as saying that <code>watch(glob)</code> means doing something when a file matching <code>glob</code> changes, or that <code>every(duration)</code> means doing something every <code>duration</code> seconds.</p>
44
-
45
- <p> &mdash; <em>Use</em> the defined triggers with callbacks, such as <code>watch(**.rb) { notify 'Code change' }</code></p>
46
- </td>
47
- <td class=code>
48
- <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;fileutils&#39;</span>
49
- <span class="nb">require</span> <span class="s1">&#39;eventmachine&#39;</span>
50
-
51
- <span class="k">module</span> <span class="nn">Sidekick</span></pre></div>
52
- </td>
53
- </tr>
54
- <tr id='section-2'>
55
- <td class=docs>
56
- <div class="octowrap">
57
- <a class="octothorpe" href="#section-2">#</a>
58
- </div>
59
- <p> This core functionality is provided by <code>Sidekick::Triggers</code>.</p>
60
-
61
- <p> New triggers can be defined by calling <code>Sidekick::Triggers.register(:trigger_name) { ... }</code>.</p>
62
-
63
- <p>Basically, the job of a trigger definition is to take the parameters and the block from a call in <code>.sidekick</code> and use it to hook into EventMachine in some way. &mdash; Just have a look at the <a href="http://github.com/jbe/sidekick/blob/master/lib/sidekick/triggers.rb">default trigger library</a>.</p>
64
-
65
- <p> By using Ruby&rsquo;s <code>method_missing</code>, we can forward method calls to the registered trigger definitions. Any module can thereby extend the <code>Triggers</code> module in order to expose the defined triggers as if they were methods.</p>
66
- </td>
67
- <td class=code>
68
- <div class='highlight'><pre> <span class="k">module</span> <span class="nn">Triggers</span>
69
- <span class="vc">@@triggers</span> <span class="o">=</span> <span class="p">{}</span>
70
-
71
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">register</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>
72
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="o">=</span> <span class="n">block</span>
73
- <span class="k">end</span>
74
-
75
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">log</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> <span class="c1"># used by triggers</span>
76
- <span class="nb">puts</span> <span class="n">str</span>
77
- <span class="k">end</span>
78
-
79
- <span class="k">def</span> <span class="nf">method_missing</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blk</span><span class="p">)</span>
80
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="p">?</span>
81
- <span class="vc">@@triggers</span><span class="o">[</span><span class="nb">name</span><span class="o">].</span><span class="n">call</span><span class="p">(</span><span class="n">blk</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="p">:</span> <span class="k">super</span>
82
- <span class="k">end</span>
83
-
84
- <span class="k">def</span> <span class="nf">respond_to?</span><span class="p">(</span><span class="nb">method</span><span class="p">)</span>
85
- <span class="k">super</span> <span class="o">||</span> <span class="o">!!</span><span class="vc">@@triggers</span><span class="o">[</span><span class="nb">method</span><span class="o">]</span>
86
- <span class="k">end</span>
87
-
88
- <span class="k">end</span></pre></div>
89
- </td>
90
- </tr>
91
- <tr id='section-3'>
92
- <td class=docs>
93
- <div class="octowrap">
94
- <a class="octothorpe" href="#section-3">#</a>
95
- </div>
96
- <p> A default library of triggers and helpers is included..</p>
97
- </td>
98
- <td class=code>
99
- <div class='highlight'><pre> <span class="nb">require</span> <span class="s1">&#39;sidekick/triggers&#39;</span>
100
- <span class="nb">require</span> <span class="s1">&#39;sidekick/helpers&#39;</span></pre></div>
101
- </td>
102
- </tr>
103
- <tr id='section-4'>
104
- <td class=docs>
105
- <div class="octowrap">
106
- <a class="octothorpe" href="#section-4">#</a>
107
- </div>
108
- <p> The <code>.sidekick</code> file is evaluated in a <code>Sidekick::Context</code> module, which exposes DSL style methods by extending <code>Sidekick::Triggers</code> and <code>Sidekick::Helpers</code>.</p>
109
- </td>
110
- <td class=code>
111
- <div class='highlight'><pre> <span class="no">Context</span> <span class="o">=</span> <span class="no">Module</span><span class="o">.</span><span class="n">new</span>
112
- <span class="no">Context</span><span class="o">.</span><span class="n">extend</span> <span class="no">Triggers</span>
113
- <span class="no">Context</span><span class="o">.</span><span class="n">extend</span> <span class="no">Helpers</span></pre></div>
114
- </td>
115
- </tr>
116
- <tr id='section-5'>
117
- <td class=docs>
118
- <div class="octowrap">
119
- <a class="octothorpe" href="#section-5">#</a>
120
- </div>
121
- <p> The <code>Sidekick.run!</code> method reads and applies the <code>.sidekick</code> file, wrapping the setup phase inside <code>EM.run { .. }</code>, and thus begins the event loop.</p>
122
-
123
- </td>
124
- <td class=code>
125
- <div class='highlight'><pre> <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">run!</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s1">&#39;.sidekick&#39;</span><span class="p">)</span>
126
- <span class="n">ensure_config_exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
127
-
128
- <span class="no">Signal</span><span class="o">.</span><span class="n">trap</span><span class="p">(</span><span class="ss">:INT</span><span class="p">)</span> <span class="p">{</span> <span class="n">stop</span> <span class="p">}</span>
129
-
130
- <span class="no">EventMachine</span><span class="o">.</span><span class="n">run</span> <span class="k">do</span>
131
- <span class="no">Context</span><span class="o">.</span><span class="n">module_eval</span><span class="p">(</span>
132
- <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">f</span><span class="o">|</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span> <span class="p">},</span> <span class="n">path</span> <span class="p">)</span>
133
- <span class="k">end</span>
134
- <span class="k">end</span>
135
-
136
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">ensure_config_exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
137
- <span class="k">unless</span> <span class="no">File</span><span class="o">.</span><span class="n">exists?</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
138
- <span class="nb">puts</span> <span class="s1">&#39;Generate new sidekick file? (Y/n)&#39;</span>
139
- <span class="nb">gets</span> <span class="o">=~</span> <span class="sr">/^N|n/</span> <span class="p">?</span> <span class="nb">exit</span> <span class="p">:</span>
140
- <span class="no">FileUtils</span><span class="o">.</span><span class="n">cp</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">expand_path</span><span class="p">(</span><span class="s1">&#39;../template&#39;</span><span class="p">,</span>
141
- <span class="bp">__FILE__</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
142
- <span class="k">end</span>
143
- <span class="k">end</span>
144
-
145
- <span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">stop</span><span class="p">(</span><span class="n">msg</span><span class="o">=</span><span class="kp">false</span><span class="p">)</span>
146
- <span class="no">EventMachine</span><span class="o">.</span><span class="n">stop</span>
147
- <span class="nb">puts</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">#{</span><span class="n">msg</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">msg</span>
148
- <span class="k">end</span>
149
-
150
- <span class="k">end</span></pre></div>
151
- </td>
152
- </tr>
153
- </table>
154
- </div>
155
- </body>
@@ -1,76 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
- <title>triggers.rb</title>
6
- <link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
7
- </head>
8
- <body>
9
- <div id='container'>
10
- <div id="background"></div>
11
- <div id="jump_to">
12
- Jump To &hellip;
13
- <div id="jump_wrapper">
14
- <div id="jump_page">
15
- <a class="source" href="sidekick.html">sidekick.rb</a>
16
- <a class="source" href="helpers.html">helpers.rb</a>
17
- <a class="source" href="util.html">util.rb</a>
18
- <a class="source" href="triggers.html">triggers.rb</a>
19
- </div>
20
- </div>
21
- </div>
22
- <table cellspacing=0 cellpadding=0>
23
- <thead>
24
- <tr>
25
- <th class=docs><h1>triggers.rb</h1></th>
26
- <th class=code></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <tr id='section-1'>
31
- <td class=docs>
32
- <div class="octowrap">
33
- <a class="octothorpe" href="#section-1">#</a>
34
- </div>
35
-
36
- </td>
37
- <td class=code>
38
- <div class='highlight'><pre><span class="nb">require</span> <span class="s1">&#39;em-dir-watcher&#39;</span>
39
-
40
-
41
- <span class="k">module</span> <span class="nn">Sidekick::Triggers</span></pre></div>
42
- </td>
43
- </tr>
44
- <tr id='section-2'>
45
- <td class=docs>
46
- <div class="octowrap">
47
- <a class="octothorpe" href="#section-2">#</a>
48
- </div>
49
- <p> default triggers</p>
50
-
51
- </td>
52
- <td class=code>
53
- <div class='highlight'><pre> <span class="n">register</span> <span class="ss">:watch</span> <span class="k">do</span> <span class="o">|</span><span class="n">callback</span><span class="p">,</span> <span class="n">glob</span><span class="o">|</span>
54
- <span class="no">EMDirWatcher</span><span class="o">.</span><span class="n">watch</span><span class="p">(</span>
55
- <span class="no">File</span><span class="o">.</span><span class="n">expand_path</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">),</span>
56
- <span class="ss">:include_only</span> <span class="o">=&gt;</span> <span class="o">[</span><span class="n">glob</span><span class="o">]</span><span class="p">,</span>
57
- <span class="ss">:grace_period</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="o">.</span><span class="mi">2</span>
58
- <span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">paths</span><span class="o">|</span>
59
- <span class="n">log</span> <span class="s2">&quot;watch </span><span class="si">#{</span><span class="n">paths</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">&quot;</span>
60
- <span class="n">callback</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">paths</span><span class="p">)</span>
61
- <span class="k">end</span>
62
- <span class="k">end</span>
63
-
64
- <span class="n">register</span> <span class="ss">:every</span> <span class="k">do</span> <span class="o">|</span><span class="n">callback</span><span class="p">,</span> <span class="n">duration</span><span class="o">|</span>
65
- <span class="no">EventMachine</span><span class="o">::</span><span class="no">PeriodicTimer</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">duration</span><span class="p">)</span> <span class="k">do</span>
66
- <span class="n">log</span> <span class="s2">&quot;every </span><span class="si">#{</span><span class="n">duration</span><span class="si">}</span><span class="s2"> seconds&quot;</span>
67
- <span class="n">callback</span><span class="o">.</span><span class="n">call</span>
68
- <span class="k">end</span>
69
- <span class="k">end</span>
70
-
71
- <span class="k">end</span></pre></div>
72
- </td>
73
- </tr>
74
- </table>
75
- </div>
76
- </body>
@@ -1,74 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html;charset=utf-8">
5
- <title>util.rb</title>
6
- <link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css">
7
- </head>
8
- <body>
9
- <div id='container'>
10
- <div id="background"></div>
11
- <div id="jump_to">
12
- Jump To &hellip;
13
- <div id="jump_wrapper">
14
- <div id="jump_page">
15
- <a class="source" href="sidekick.html">sidekick.rb</a>
16
- <a class="source" href="helpers.html">helpers.rb</a>
17
- <a class="source" href="util.html">util.rb</a>
18
- <a class="source" href="triggers.html">triggers.rb</a>
19
- </div>
20
- </div>
21
- </div>
22
- <table cellspacing=0 cellpadding=0>
23
- <thead>
24
- <tr>
25
- <th class=docs><h1>util.rb</h1></th>
26
- <th class=code></th>
27
- </tr>
28
- </thead>
29
- <tbody>
30
- <tr id='section-1'>
31
- <td class=docs>
32
- <div class="octowrap">
33
- <a class="octothorpe" href="#section-1">#</a>
34
- </div>
35
-
36
- </td>
37
- <td class=code>
38
- <div class='highlight'><pre><span class="k">module</span> <span class="nn">Util</span></pre></div>
39
- </td>
40
- </tr>
41
- <tr id='section-2'>
42
- <td class=docs>
43
- <div class="octowrap">
44
- <a class="octothorpe" href="#section-2">#</a>
45
- </div>
46
- <p> :linux, :darwin, :other</p>
47
-
48
- </td>
49
- <td class=code>
50
- <div class='highlight'><pre> <span class="k">def</span> <span class="nf">platform</span>
51
- <span class="o">[</span><span class="ss">:linux</span><span class="p">,</span> <span class="ss">:darwin</span><span class="o">].</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">plf</span><span class="o">|</span>
52
- <span class="k">return</span> <span class="n">plf</span> <span class="k">if</span> <span class="no">Config</span><span class="o">::</span><span class="no">CONFIG</span><span class="o">[</span><span class="s1">&#39;target_os&#39;</span><span class="o">]</span> <span class="o">=~</span> <span class="sr">/</span><span class="si">#{</span><span class="n">plf</span><span class="si">}</span><span class="sr">/i</span>
53
- <span class="k">end</span><span class="p">;</span> <span class="ss">:other</span>
54
- <span class="k">end</span>
55
-
56
- <span class="k">def</span> <span class="nf">gem_load?</span><span class="p">(</span><span class="n">gemname</span><span class="p">,</span> <span class="n">function</span><span class="o">=</span><span class="s1">&#39;full&#39;</span><span class="p">)</span>
57
- <span class="vi">@installed</span> <span class="o">||=</span> <span class="k">begin</span>
58
- <span class="nb">require</span> <span class="n">gemname</span>
59
- <span class="kp">true</span>
60
- <span class="k">rescue</span> <span class="no">LoadError</span>
61
- <span class="s2">&quot;Please gem install </span><span class="si">#{</span><span class="n">gemname</span><span class="si">}</span><span class="s2"> for </span><span class="si">#{</span><span class="n">function</span><span class="si">}</span><span class="s2"> support.&quot;</span>
62
- <span class="o">::</span><span class="no">Sidekick</span><span class="o">.</span><span class="n">stop</span>
63
- <span class="k">end</span>
64
- <span class="k">end</span>
65
-
66
- <span class="k">def</span> <span class="nf">platform_load?</span><span class="p">(</span><span class="n">gems</span><span class="p">,</span> <span class="n">function</span><span class="o">=</span><span class="s1">&#39;full&#39;</span><span class="p">)</span>
67
- <span class="n">gem_load?</span><span class="p">(</span><span class="n">gems</span><span class="o">[</span><span class="n">platform</span><span class="o">]</span><span class="p">,</span> <span class="n">function</span><span class="p">)</span>
68
- <span class="k">end</span>
69
- <span class="k">end</span></pre></div>
70
- </td>
71
- </tr>
72
- </table>
73
- </div>
74
- </body>