Files
kennethreitz.github.com/test/syntax.html
T
2010-04-05 04:27:13 -04:00

69 lines
28 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>code.kennethreitz.com :: Syntax Highlighting Debug</title>
<link href='/stylesheets/screen.css' media='screen, projection' rel='stylesheet' type='text/css' />
<script src='http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js' type='text/javascript'></script>
<script src='/javascripts/mootools-1.2.4.2-more.js' type='text/javascript'></script>
<script type='text/javascript'>
//<![CDATA[
var twitter_user = "kennethreitz"
var show_replies = false;
var tweet_count = 3;
//]]>
</script>
<script src='/javascripts/octopress.js' type='text/javascript'></script>
<script src='/javascripts/twitter.js' type='text/javascript'></script>
<link href='/atom.xml' rel='alternate' title='code.kennethreitz.com' type='application/atom+xml' />
</head>
<body id="">
<div id="header">
<div class='content'>
<h1>
<a class='title' href='/'>code.kennethreitz.com</a>
</h1>
</div>
</div>
<div id="nav">
<div class='content'>
<ul>
<li class='alpha'>
<a href='/'>Blog</a>
</li>
<li class='omega'>
<a href='/about.html'>About</a>
</li>
<li class='subscribe'>
<a href='/atom.xml'>Subscribe</a>
</li>
</ul>
</div>
</div>
<div id="page">
<div id="content">
<div id="main">
<div class="content"><div class="code_window">&#x000A;<em>Ruby</em>&#x000A;<div class="highlight"><pre><span class="k">def</span> <span class="nf">rebuild_site</span><span class="p">(</span><span class="n">relative</span><span class="p">)</span>&#x000A; <span class="nb">puts</span> <span class="s2">&quot;&gt;&gt;&gt; Change Detected to: </span><span class="si">#{</span><span class="n">relative</span><span class="si">}</span><span class="s2"> &lt;&lt;&lt;&quot;</span>&#x000A; <span class="no">IO</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;rake generate&#39;</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">io</span><span class="o">|</span>&#x000A; <span class="nb">print</span><span class="p">(</span><span class="n">io</span><span class="o">.</span><span class="n">readpartial</span><span class="p">(</span><span class="mi">512</span><span class="p">))</span> <span class="k">until</span> <span class="n">io</span><span class="o">.</span><span class="n">eof?</span>&#x000A; <span class="k">end</span>&#x000A; <span class="nb">puts</span> <span class="s1">&#39;&gt;&gt;&gt; Update Complete &lt;&lt;&lt;&#39;</span>&#x000A;<span class="k">end</span>&#x000A;</pre>&#x000A;</div>&#x000A;</div>&#x000A;&#x000A;&#x000A;<p>So that&#8217;s a small example. What about a big one?</p>&#x000A;&#x000A;<div class="code_window">&#x000A;<em>Ruby</em>&#x000A;<div class="highlight"><pre><span class="nb">require</span> <span class="s1">&#39;active_support/core_ext/array&#39;</span>&#x000A;<span class="nb">require</span> <span class="s1">&#39;active_support/core_ext/hash/except&#39;</span>&#x000A;<span class="nb">require</span> <span class="s1">&#39;active_support/core_ext/object/metaclass&#39;</span>&#x000A;&#x000A;<span class="k">module</span> <span class="nn">ActiveRecord</span>&#x000A; <span class="k">module</span> <span class="nn">NamedScope</span>&#x000A; <span class="kp">extend</span> <span class="no">ActiveSupport</span><span class="o">::</span><span class="no">Concern</span>&#x000A;&#x000A; <span class="c1"># All subclasses of ActiveRecord::Base have one named scope:</span>&#x000A; <span class="c1"># * &lt;tt&gt;scoped&lt;/tt&gt; - which allows for the creation of anonymous \scopes, on the fly: &lt;tt&gt;Shirt.scoped(:conditions =&gt; {:color =&gt; &#39;red&#39;}).scoped(:include =&gt; :washing_instructions)&lt;/tt&gt;</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># These anonymous \scopes tend to be useful when procedurally generating complex queries, where passing</span>&#x000A; <span class="c1"># intermediate values (scopes) around as first-class objects is convenient.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># You can define a scope that applies to all finders using ActiveRecord::Base.default_scope.</span>&#x000A; <span class="n">included</span> <span class="k">do</span>&#x000A; <span class="n">named_scope</span> <span class="ss">:scoped</span><span class="p">,</span> <span class="nb">lambda</span> <span class="p">{</span> <span class="o">|</span><span class="n">scope</span><span class="o">|</span> <span class="n">scope</span> <span class="p">}</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">module</span> <span class="nn">ClassMethods</span>&#x000A; <span class="k">def</span> <span class="nf">scopes</span>&#x000A; <span class="n">read_inheritable_attribute</span><span class="p">(</span><span class="ss">:scopes</span><span class="p">)</span> <span class="o">||</span> <span class="n">write_inheritable_attribute</span><span class="p">(</span><span class="ss">:scopes</span><span class="p">,</span> <span class="p">{})</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="c1"># Adds a class method for retrieving and querying objects. A scope represents a narrowing of a database query,</span>&#x000A; <span class="c1"># such as &lt;tt&gt;:conditions =&gt; {:color =&gt; :red}, :select =&gt; &#39;shirts.*&#39;, :include =&gt; :washing_instructions&lt;/tt&gt;.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># class Shirt &lt; ActiveRecord::Base</span>&#x000A; <span class="c1"># named_scope :red, :conditions =&gt; {:color =&gt; &#39;red&#39;}</span>&#x000A; <span class="c1"># named_scope :dry_clean_only, :joins =&gt; :washing_instructions, :conditions =&gt; [&#39;washing_instructions.dry_clean_only = ?&#39;, true]</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1"># </span>&#x000A; <span class="c1"># The above calls to &lt;tt&gt;named_scope&lt;/tt&gt; define class methods Shirt.red and Shirt.dry_clean_only. Shirt.red, </span>&#x000A; <span class="c1"># in effect, represents the query &lt;tt&gt;Shirt.find(:all, :conditions =&gt; {:color =&gt; &#39;red&#39;})&lt;/tt&gt;.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># Unlike &lt;tt&gt;Shirt.find(...)&lt;/tt&gt;, however, the object returned by Shirt.red is not an Array; it resembles the association object</span>&#x000A; <span class="c1"># constructed by a &lt;tt&gt;has_many&lt;/tt&gt; declaration. For instance, you can invoke &lt;tt&gt;Shirt.red.find(:first)&lt;/tt&gt;, &lt;tt&gt;Shirt.red.count&lt;/tt&gt;,</span>&#x000A; <span class="c1"># &lt;tt&gt;Shirt.red.find(:all, :conditions =&gt; {:size =&gt; &#39;small&#39;})&lt;/tt&gt;. Also, just</span>&#x000A; <span class="c1"># as with the association objects, named \scopes act like an Array, implementing Enumerable; &lt;tt&gt;Shirt.red.each(&amp;block)&lt;/tt&gt;,</span>&#x000A; <span class="c1"># &lt;tt&gt;Shirt.red.first&lt;/tt&gt;, and &lt;tt&gt;Shirt.red.inject(memo, &amp;block)&lt;/tt&gt; all behave as if Shirt.red really was an Array.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># These named \scopes are composable. For instance, &lt;tt&gt;Shirt.red.dry_clean_only&lt;/tt&gt; will produce all shirts that are both red and dry clean only.</span>&#x000A; <span class="c1"># Nested finds and calculations also work with these compositions: &lt;tt&gt;Shirt.red.dry_clean_only.count&lt;/tt&gt; returns the number of garments</span>&#x000A; <span class="c1"># for which these criteria obtain. Similarly with &lt;tt&gt;Shirt.red.dry_clean_only.average(:thread_count)&lt;/tt&gt;.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># All \scopes are available as class methods on the ActiveRecord::Base descendant upon which the \scopes were defined. But they are also available to</span>&#x000A; <span class="c1"># &lt;tt&gt;has_many&lt;/tt&gt; associations. If,</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># class Person &lt; ActiveRecord::Base</span>&#x000A; <span class="c1"># has_many :shirts</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># then &lt;tt&gt;elton.shirts.red.dry_clean_only&lt;/tt&gt; will return all of Elton&#39;s red, dry clean</span>&#x000A; <span class="c1"># only shirts.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># Named \scopes can also be procedural:</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># class Shirt &lt; ActiveRecord::Base</span>&#x000A; <span class="c1"># named_scope :colored, lambda { |color|</span>&#x000A; <span class="c1"># { :conditions =&gt; { :color =&gt; color } }</span>&#x000A; <span class="c1"># }</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># In this example, &lt;tt&gt;Shirt.colored(&#39;puce&#39;)&lt;/tt&gt; finds all puce shirts.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># Named \scopes can also have extensions, just as with &lt;tt&gt;has_many&lt;/tt&gt; declarations:</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># class Shirt &lt; ActiveRecord::Base</span>&#x000A; <span class="c1"># named_scope :red, :conditions =&gt; {:color =&gt; &#39;red&#39;} do</span>&#x000A; <span class="c1"># def dom_id</span>&#x000A; <span class="c1"># &#39;red_shirts&#39;</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># For testing complex named \scopes, you can examine the scoping options using the</span>&#x000A; <span class="c1"># &lt;tt&gt;proxy_options&lt;/tt&gt; method on the proxy itself.</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># class Shirt &lt; ActiveRecord::Base</span>&#x000A; <span class="c1"># named_scope :colored, lambda { |color|</span>&#x000A; <span class="c1"># { :conditions =&gt; { :color =&gt; color } }</span>&#x000A; <span class="c1"># }</span>&#x000A; <span class="c1"># end</span>&#x000A; <span class="c1">#</span>&#x000A; <span class="c1"># expected_options = { :conditions =&gt; { :colored =&gt; &#39;red&#39; } }</span>&#x000A; <span class="c1"># assert_equal expected_options, Shirt.colored(&#39;red&#39;).proxy_options</span>&#x000A; <span class="k">def</span> <span class="nf">named_scope</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="n">options</span> <span class="o">=</span> <span class="p">{},</span> <span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>&#x000A; <span class="nb">name</span> <span class="o">=</span> <span class="nb">name</span><span class="o">.</span><span class="n">to_sym</span>&#x000A; <span class="n">scopes</span><span class="o">[</span><span class="nb">name</span><span class="o">]</span> <span class="o">=</span> <span class="nb">lambda</span> <span class="k">do</span> <span class="o">|</span><span class="n">parent_scope</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="o">|</span>&#x000A; <span class="no">Scope</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">parent_scope</span><span class="p">,</span> <span class="k">case</span> <span class="n">options</span>&#x000A; <span class="k">when</span> <span class="no">Hash</span>&#x000A; <span class="n">options</span>&#x000A; <span class="k">when</span> <span class="no">Proc</span>&#x000A; <span class="n">options</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">end</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="n">metaclass</span><span class="o">.</span><span class="n">instance_eval</span> <span class="k">do</span>&#x000A; <span class="n">define_method</span> <span class="nb">name</span> <span class="k">do</span> <span class="o">|*</span><span class="n">args</span><span class="o">|</span>&#x000A; <span class="n">scopes</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="nb">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">class</span> <span class="nc">Scope</span>&#x000A; <span class="kp">attr_reader</span> <span class="ss">:proxy_scope</span><span class="p">,</span> <span class="ss">:proxy_options</span><span class="p">,</span> <span class="ss">:current_scoped_methods_when_defined</span>&#x000A; <span class="no">NON_DELEGATE_METHODS</span> <span class="o">=</span> <span class="sx">%w(nil? send object_id class extend find size count sum average maximum minimum paginate first last empty? any? many? respond_to?)</span><span class="o">.</span><span class="n">to_set</span>&#x000A; <span class="o">[].</span><span class="n">methods</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">m</span><span class="o">|</span>&#x000A; <span class="k">unless</span> <span class="n">m</span> <span class="o">=~</span> <span class="sr">/^__/</span> <span class="o">||</span> <span class="no">NON_DELEGATE_METHODS</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">to_s</span><span class="p">)</span>&#x000A; <span class="n">delegate</span> <span class="n">m</span><span class="p">,</span> <span class="ss">:to</span> <span class="o">=&gt;</span> <span class="ss">:proxy_found</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="n">delegate</span> <span class="ss">:scopes</span><span class="p">,</span> <span class="ss">:with_scope</span><span class="p">,</span> <span class="ss">:scoped_methods</span><span class="p">,</span> <span class="ss">:to</span> <span class="o">=&gt;</span> <span class="ss">:proxy_scope</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">proxy_scope</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">block</span><span class="p">)</span>&#x000A; <span class="n">options</span> <span class="o">||=</span> <span class="p">{}</span>&#x000A; <span class="o">[</span><span class="n">options</span><span class="o">[</span><span class="ss">:extend</span><span class="o">]].</span><span class="n">flatten</span><span class="o">.</span><span class="n">each</span> <span class="p">{</span> <span class="o">|</span><span class="n">extension</span><span class="o">|</span> <span class="kp">extend</span> <span class="n">extension</span> <span class="p">}</span> <span class="k">if</span> <span class="n">options</span><span class="o">[</span><span class="ss">:extend</span><span class="o">]</span>&#x000A; <span class="kp">extend</span> <span class="no">Module</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="o">&amp;</span><span class="n">block</span><span class="p">)</span> <span class="k">if</span> <span class="nb">block_given?</span>&#x000A; <span class="k">unless</span> <span class="no">Scope</span> <span class="o">===</span> <span class="n">proxy_scope</span>&#x000A; <span class="vi">@current_scoped_methods_when_defined</span> <span class="o">=</span> <span class="n">proxy_scope</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="ss">:current_scoped_methods</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="vi">@proxy_scope</span><span class="p">,</span> <span class="vi">@proxy_options</span> <span class="o">=</span> <span class="n">proxy_scope</span><span class="p">,</span> <span class="n">options</span><span class="o">.</span><span class="n">except</span><span class="p">(</span><span class="ss">:extend</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">reload</span>&#x000A; <span class="n">load_found</span><span class="p">;</span> <span class="nb">self</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">first</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">kind_of?</span><span class="p">(</span><span class="nb">Integer</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="vi">@found</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">args</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">kind_of?</span><span class="p">(</span><span class="no">Hash</span><span class="p">))</span>&#x000A; <span class="n">proxy_found</span><span class="o">.</span><span class="n">first</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">else</span>&#x000A; <span class="n">find</span><span class="p">(</span><span class="ss">:first</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">last</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">kind_of?</span><span class="p">(</span><span class="nb">Integer</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="vi">@found</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">args</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">kind_of?</span><span class="p">(</span><span class="no">Hash</span><span class="p">))</span>&#x000A; <span class="n">proxy_found</span><span class="o">.</span><span class="n">last</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">else</span>&#x000A; <span class="n">find</span><span class="p">(</span><span class="ss">:last</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">size</span>&#x000A; <span class="vi">@found</span> <span class="p">?</span> <span class="vi">@found</span><span class="o">.</span><span class="n">length</span> <span class="p">:</span> <span class="n">count</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">empty?</span>&#x000A; <span class="vi">@found</span> <span class="p">?</span> <span class="vi">@found</span><span class="o">.</span><span class="n">empty?</span> <span class="p">:</span> <span class="n">count</span><span class="o">.</span><span class="n">zero?</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">respond_to?</span><span class="p">(</span><span class="nb">method</span><span class="p">,</span> <span class="n">include_private</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>&#x000A; <span class="k">super</span> <span class="o">||</span> <span class="vi">@proxy_scope</span><span class="o">.</span><span class="n">respond_to?</span><span class="p">(</span><span class="nb">method</span><span class="p">,</span> <span class="n">include_private</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">any?</span>&#x000A; <span class="k">if</span> <span class="nb">block_given?</span>&#x000A; <span class="n">proxy_found</span><span class="o">.</span><span class="n">any?</span> <span class="p">{</span> <span class="o">|*</span><span class="n">block_args</span><span class="o">|</span> <span class="k">yield</span><span class="p">(</span><span class="o">*</span><span class="n">block_args</span><span class="p">)</span> <span class="p">}</span>&#x000A; <span class="k">else</span>&#x000A; <span class="o">!</span><span class="n">empty?</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="c1"># Returns true if the named scope has more than 1 matching record.</span>&#x000A; <span class="k">def</span> <span class="nf">many?</span>&#x000A; <span class="k">if</span> <span class="nb">block_given?</span>&#x000A; <span class="n">proxy_found</span><span class="o">.</span><span class="n">many?</span> <span class="p">{</span> <span class="o">|*</span><span class="n">block_args</span><span class="o">|</span> <span class="k">yield</span><span class="p">(</span><span class="o">*</span><span class="n">block_args</span><span class="p">)</span> <span class="p">}</span>&#x000A; <span class="k">else</span>&#x000A; <span class="n">size</span> <span class="o">&gt;</span> <span class="mi">1</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="kp">protected</span>&#x000A; <span class="k">def</span> <span class="nf">proxy_found</span>&#x000A; <span class="vi">@found</span> <span class="o">||</span> <span class="n">load_found</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="kp">private</span>&#x000A; <span class="k">def</span> <span class="nf">method_missing</span><span class="p">(</span><span class="nb">method</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">block</span><span class="p">)</span>&#x000A; <span class="k">if</span> <span class="n">scopes</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="nb">method</span><span class="p">)</span>&#x000A; <span class="n">scopes</span><span class="o">[</span><span class="nb">method</span><span class="o">].</span><span class="n">call</span><span class="p">(</span><span class="nb">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>&#x000A; <span class="k">else</span>&#x000A; <span class="n">with_scope</span><span class="p">({</span><span class="ss">:find</span> <span class="o">=&gt;</span> <span class="n">proxy_options</span><span class="p">,</span> <span class="ss">:create</span> <span class="o">=&gt;</span> <span class="n">proxy_options</span><span class="o">[</span><span class="ss">:conditions</span><span class="o">].</span><span class="n">is_a?</span><span class="p">(</span><span class="no">Hash</span><span class="p">)</span> <span class="p">?</span> <span class="n">proxy_options</span><span class="o">[</span><span class="ss">:conditions</span><span class="o">]</span> <span class="p">:</span> <span class="p">{}},</span> <span class="ss">:reverse_merge</span><span class="p">)</span> <span class="k">do</span>&#x000A; <span class="nb">method</span> <span class="o">=</span> <span class="ss">:new</span> <span class="k">if</span> <span class="nb">method</span> <span class="o">==</span> <span class="ss">:build</span>&#x000A; <span class="k">if</span> <span class="n">current_scoped_methods_when_defined</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">scoped_methods</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">current_scoped_methods_when_defined</span><span class="p">)</span>&#x000A; <span class="n">with_scope</span> <span class="n">current_scoped_methods_when_defined</span> <span class="k">do</span>&#x000A; <span class="n">proxy_scope</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="nb">method</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">block</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">else</span>&#x000A; <span class="n">proxy_scope</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="nb">method</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">block</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;&#x000A; <span class="k">def</span> <span class="nf">load_found</span>&#x000A; <span class="vi">@found</span> <span class="o">=</span> <span class="n">find</span><span class="p">(</span><span class="ss">:all</span><span class="p">)</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A; <span class="k">end</span>&#x000A;<span class="k">end</span>&#x000A;</pre>&#x000A;</div>&#x000A;</div>&#x000A;</div>
</div>
<div id="sidebar">
<h4>Twitter <a class="small" href="http://twitter.com/kennethreitz">@kennethreitz</a></h4>
<div id='twitter'>
<ul id='twitter_status'>
Status updating...
</ul>
</div>
<h4>My Delicious <a class="small" href="http://delicious.com/drummer42">more &rarr;</a></h4>
<div id='delicious'>
<script src='http://feeds.delicious.com/v2/js/drummer42?title=&amp;count=3&amp;sort=date&amp;extended' type='text/javascript'></script>
</div>
</div>
</div>
</div>
<div id='footer'>
<div class='content'>
Copyright &copy; 2010 - code.kennethreitz.com -
<span class='credit'>Powered by <a href="http://octopress.org">Octopress</a></span>
</div>
</div>
</body>
</html>