<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Polishing Ruby</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/" />
    <link rel="self" type="application/atom+xml" href="http://blog.zenspider.com/atom.xml" />
    <id>tag:blog.zenspider.com,2008-04-09://2</id>
    <updated>2010-09-02T07:16:10Z</updated>
    <subtitle>Musings on Ruby and the Ruby Community...</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.32-en</generator>

<entry>
    <title>zenprofile version 1.3.0 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/zenprofile-version-130-has-bee.html" />
    <id>tag:blog.zenspider.com,2010://2.597</id>

    <published>2010-09-02T07:16:10Z</published>
    <updated>2010-09-02T07:16:10Z</updated>

    <summary>zenprofiler helps answer WHAT is being called the most. spyon helps answer WHERE those calls are being made. ZenProfiler provides a faster version of the standard library ruby profiler. It is otherwise pretty much the same as before. spyon provides...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>zenprofiler helps answer WHAT is being called the most. spy<em>on helps
answer WHERE those calls are being made. ZenProfiler provides a faster
version of the standard library ruby profiler. It is otherwise pretty
much the same as before. spy</em>on provides a clean way to redefine a
bottleneck method so you can account for and aggregate all the calls
to it.</p>

<pre><code>% ruby -Ilib bin/zenprofile misc/factorial.rb 50000
Total time = 3.056884
Total time = 2.390000

          total     self              self    total
% time  seconds  seconds    calls  ms/call  ms/call  name
 50.70     1.64     1.64    50000     0.03     0.05 Integer#downto
 19.63     2.27     0.63   200000     0.00     0.00 Fixnum#*
 14.19     2.73     0.46    50000     0.01     0.05 Factorial#factorial
  9.93     3.05     0.32        1   320.36  3047.10 Range#each
  5.54     3.23     0.18        2    89.40   178.79 ZenProfiler#start_hook
</code></pre>

<p>Once you know that Integer#downto takes 50% of the entire run, you
can use spy_on to find it. (See misc/factorial.rb for the actual code):</p>

<pre><code>% SPY=1 ruby -Ilib misc/factorial.rb 50000
Spying on Integer#downto

Integer.downto

50000: total
50000: ./misc/factorial.rb:6:in `factorial' via 
       ./misc/factorial.rb:6:in `factorial'
</code></pre>

<p>Changes:</p>

<h3>1.3.0 / 2010-09-02</h3>

<ul>
<li><p>2 minor enhancements:</p>

<ul>
<li>Added spy<em>cm and spy</em>on_cm for class methods</li>
<li>Improved zenprofile output for class methods. ENV really sucks.</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/seattlerb">http://rubyforge.org/projects/seattlerb</a></p></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>event_hook version 1.0.2 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/event-hook-version-102-has-bee.html" />
    <id>tag:blog.zenspider.com,2010://2.596</id>

    <published>2010-09-02T07:13:26Z</published>
    <updated>2010-09-02T07:13:26Z</updated>

    <summary>Wraps rbaddeventhook so you can write fast ruby event hook processors w/o the speed penalty that comes with settrace_func (sooo sloooow!). Calls back into ruby so you don&apos;t have to write C. % ruby demo.rb # of iterations = 1000000...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Wraps rb<em>add</em>event<em>hook so you can write fast ruby event hook
processors w/o the speed penalty that comes with set</em>trace_func (sooo
sloooow!). Calls back into ruby so you don't have to write C.</p>

<pre><code>% ruby demo.rb 
# of iterations = 1000000
                          user     system      total        real
null_time             0.120000   0.000000   0.120000 (  0.125279)
ruby time             0.560000   0.000000   0.560000 (  0.562834)
event hook            3.160000   0.010000   3.170000 (  3.175361)
set_trace_func       34.530000   0.100000  34.630000 ( 34.942785)
</code></pre>

<p>Changes:</p>

<h3>1.1.0 / 2010-09-02</h3>

<ul>
<li><p>2 minor enhancements:</p>

<ul>
<li>Allow event<em>hook</em>klass to work with class and metaclass.</li>
<li>Force ~/.ruby_inline cleanup in tests</li>
</ul></li>
<li><p>1 bug fix:</p>

<ul>
<li>event_hook won't work on any 1.9 w/o major rework :(</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/seattlerb">http://rubyforge.org/projects/seattlerb</a></p></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>rake-remote_task version 2.0.2 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/rake-remote-task-version-202-h.html" />
    <id>tag:blog.zenspider.com,2010://2.595</id>

    <published>2010-09-02T07:07:21Z</published>
    <updated>2010-09-02T07:07:21Z</updated>

    <summary>Vlad the Deployer&apos;s sexy brainchild is rake-remote_task, extending Rake with remote task goodness. Changes: 2.0.2 / 2010-09-02 1 bug fix: 1.9 fixes to quell test warnings and the like http://rubyhitsquad.com/ http://rubyforge.org/projects/hitsquad/...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Vlad the Deployer's sexy brainchild is rake-remote_task, extending
Rake with remote task goodness.</p>

<p>Changes:</p>

<h3>2.0.2 / 2010-09-02</h3>

<ul>
<li><p>1 bug fix:</p>

<ul>
<li>1.9 fixes to quell test warnings and the like</li>
</ul></li>
<li><p><a href="http://rubyhitsquad.com/">http://rubyhitsquad.com/</a></p></li>
<li><a href="http://rubyforge.org/projects/hitsquad/">http://rubyforge.org/projects/hitsquad/</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>flay version 1.4.1 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/flay-version-141-has-been-rele.html" />
    <id>tag:blog.zenspider.com,2010://2.594</id>

    <published>2010-09-02T06:23:51Z</published>
    <updated>2010-09-02T06:23:51Z</updated>

    <summary>Flay analyzes code for structural similarities. Differences in literal values, variable, class, method names, whitespace, programming style, braces vs do/end, etc are all ignored. Making this totally rad. Changes: 1.4.1 / 2010-09-01 2 minor enhancements: Added extra error handling for...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="flay" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Flay analyzes code for structural similarities. Differences in literal
values, variable, class, method names, whitespace, programming style,
braces vs do/end, etc are all ignored. Making this totally rad.</p>

<p>Changes:</p>

<h3>1.4.1 / 2010-09-01</h3>

<ul>
<li><p>2 minor enhancements:</p>

<ul>
<li>Added extra error handling for ERB flay to deal with tons of bad ERB</li>
<li>Skip plugin if another version already loaded (eg local vs gem).</li>
</ul></li>
<li><p>1 bug fix:</p>

<ul>
<li>Fixed all tests that were having problems on 1.9 due to unstable hashes</li>
</ul></li>
<li><p><a href="http://ruby.sadi.st/">http://ruby.sadi.st/</a></p></li>
<li><a href="http://rubyforge.org/projects/seattlerb">http://rubyforge.org/projects/seattlerb</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>flog version 2.5.0 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/flog-version-250-has-been-rele.html" />
    <id>tag:blog.zenspider.com,2010://2.593</id>

    <published>2010-09-02T06:19:11Z</published>
    <updated>2010-09-02T06:19:11Z</updated>

    <summary>Flog reports the most tortured code in an easy to read pain report. The higher the score, the more pain the code is in. Changes: 2.5.0 / 2010-09-01 1 major enhancement: Added plugin system. Define a module under Flog to...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="flog" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Flog reports the most tortured code in an easy to read pain
report. The higher the score, the more pain the code is in.</p>

<p>Changes:</p>

<h3>2.5.0 / 2010-09-01</h3>

<ul>
<li><p>1 major enhancement:</p>

<ul>
<li>Added plugin system. Define a module under Flog to extend it.</li>
</ul></li>
<li><p>3 minor enhancements:</p>

<ul>
<li>Added special case penalty for wtf to_proc: blah(&amp;b = proc {...}) (benjaminb)</li>
<li>Improved tests and test coverage.</li>
<li>Unfactored &amp; refactored report code. Much cleaner and  more maintainable now.</li>
</ul></li>
<li><p>2 bug fixes:</p>

<ul>
<li>Fixed API change for FlogTask (andreacampi)</li>
<li>Fixed bad edgecase handler for block_pass (benjaminb)</li>
</ul></li>
<li><p><a href="http://ruby.sadi.st/">http://ruby.sadi.st/</a></p></li>
<li><a href="http://rubyforge.org/projects/seattlerb">http://rubyforge.org/projects/seattlerb</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>ruby2ruby version 1.2.5 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/ruby2ruby-version-125-has-been.html" />
    <id>tag:blog.zenspider.com,2010://2.592</id>

    <published>2010-09-01T23:37:16Z</published>
    <updated>2010-09-01T23:37:16Z</updated>

    <summary>ruby2ruby provides a means of generating pure ruby code easily from RubyParser compatible Sexps. This makes making dynamic language processors in ruby easier than ever! Changes: 1.2.5 / 2010-09-01 4 minor enhancements: Added braces to hash args surrounded if in...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="ruby2ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>ruby2ruby provides a means of generating pure ruby code easily from
RubyParser compatible Sexps. This makes making dynamic language
processors in ruby easier than ever!</p>

<p>Changes:</p>

<h3>1.2.5 / 2010-09-01</h3>

<ul>
<li><p>4 minor enhancements:</p>

<ul>
<li>Added braces to hash args surrounded if in a binary method call.</li>
<li>Added rewrite_resbody to double check structure and freak if necessary.</li>
<li>Added stress task</li>
<li>rewrite_rescue now detects rescue with multiple arguments.</li>
</ul></li>
<li><p>2 bug fixes:</p>

<ul>
<li>Fixed dstr/dregex/d* roundtripping problem</li>
<li>Fixed up call arg processing to be more correct and to work with the new sexp form</li>
</ul></li>
<li><p><a href="http://seattlerb.rubyforge.org/">http://seattlerb.rubyforge.org/</a></p></li>
<li><a href="http://rubyforge.org/projects/seattlerb">http://rubyforge.org/projects/seattlerb</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>ruby_parser version 2.0.5 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/ruby-parser-version-205-has-be.html" />
    <id>tag:blog.zenspider.com,2010://2.591</id>

    <published>2010-09-01T23:25:17Z</published>
    <updated>2010-09-01T23:25:17Z</updated>

    <summary>ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which does by default use a C extension). RP&apos;s output is the same as ParseTree&apos;s output: s-expressions using ruby&apos;s arrays and base types. As an example: def conditional1(arg1) if...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="ruby_parser" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
racc--which does by default use a C extension). RP's output is
the same as ParseTree's output: s-expressions using ruby's arrays and
base types.</p>

<p>As an example:</p>

<p>def conditional1(arg1)
    if arg1 == 0 then
      return 1
    end
    return 0
  end</p>

<p>becomes:</p>

<p>s(:defn, :conditional1,
   s(:args, :arg1),
   s(:scope,
    s(:block,
     s(:if,
      s(:call, s(:lvar, :arg1), :==, s(:arglist, s(:lit, 0))),
      s(:return, s(:lit, 1)),
      nil),
     s(:return, s(:lit, 0)))))</p>

<p>Changes:</p>

<h3>2.0.5 / 2010-09-01</h3>

<ul>
<li><p>1 minor enhancement:</p>

<ul>
<li>Started merging like lexical cases to try to squeeze some optimization out</li>
</ul></li>
<li><p><a href="http://parsetree.rubyforge.org/">http://parsetree.rubyforge.org/</a></p></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>ParseTree version 3.0.6 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/parsetree-version-306-has-been.html" />
    <id>tag:blog.zenspider.com,2010://2.590</id>

    <published>2010-09-01T23:00:15Z</published>
    <updated>2010-09-01T23:00:15Z</updated>

    <summary>ParseTree is a C extension (using RubyInline) that extracts the parse tree for an entire class or a specific method and returns it as a s-expression (aka sexp) using ruby&apos;s arrays, strings, symbols, and integers. As an example: def conditional1(arg1)...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="ParseTree" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>ParseTree is a C extension (using RubyInline) that extracts the parse
tree for an entire class or a specific method and returns it as a
s-expression (aka sexp) using ruby's arrays, strings, symbols, and
integers.</p>

<p>As an example:</p>

<p>def conditional1(arg1)
    if arg1 == 0 then
      return 1
    end
    return 0
  end</p>

<p>becomes:</p>

<p>[:defn,
    :conditional1,
    [:scope,
     [:block,
      [:args, :arg1],
      [:if,
       [:call, [:lvar, :arg1], :==, [:array, [:lit, 0]]],
       [:return, [:lit, 1]],
       nil],
      [:return, [:lit, 0]]]]]</p>

<p>Changes:</p>

<h3>3.0.6 / 2010-09-01</h3>

<ul>
<li><p>1 bug fix:</p>

<ul>
<li>fixed requires (e-tobi)</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/parsetree/">http://rubyforge.org/projects/parsetree/</a></p></li>
<li><a href="http://www.zenspider.com/ZSS/Products/ParseTree/">http://www.zenspider.com/ZSS/Products/ParseTree/</a></li>
<li><a href="&#109;&#97;i&#108;&#116;&#x6F;:&#x72;&#121;&#97;n&#100;&#45;&#x72;&#117;&#x62;&#121;&#64;&#x7A;&#x65;&#x6E;&#x73;&#112;&#x69;&#100;&#101;&#x72;&#x2E;&#99;&#x6F;&#109;">&#x72;&#121;&#97;n&#100;&#45;&#x72;&#117;&#x62;&#121;&#64;&#x7A;&#x65;&#x6E;&#x73;&#112;&#x69;&#100;&#101;&#x72;&#x2E;&#99;&#x6F;&#109;</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>sexp_processor version 3.0.5 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/sexp-processor-version-305-has.html" />
    <id>tag:blog.zenspider.com,2010://2.589</id>

    <published>2010-09-01T22:57:18Z</published>
    <updated>2010-09-01T22:57:18Z</updated>

    <summary>sexp_processor branches from ParseTree bringing all the generic sexp processing tools with it. Sexp, SexpProcessor, Environment, etc... all for your language processing pleasure. Changes: 3.0.5 / 2010-09-01 2 minor enhancements: Added in_context to clean up code. optimize inspect to avoid...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="sexp_processor" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>sexp_processor branches from ParseTree bringing all the generic sexp
processing tools with it. Sexp, SexpProcessor, Environment, etc... all
for your language processing pleasure.</p>

<p>Changes:</p>

<h3>3.0.5 / 2010-09-01</h3>

<ul>
<li><p>2 minor enhancements:</p>

<ul>
<li>Added in_context to clean up code.</li>
<li>optimize inspect to avoid needlessly caching @line</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/parsetree/">http://rubyforge.org/projects/parsetree/</a></p></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>RubyInline version 3.8.5 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/rubyinline-version-385-has-bee.html" />
    <id>tag:blog.zenspider.com,2010://2.588</id>

    <published>2010-09-01T22:45:55Z</published>
    <updated>2010-09-01T22:45:55Z</updated>

    <summary>Inline allows you to write foreign code within your ruby code. It automatically determines if the code in question has changed and builds it only when necessary. The extensions are then automatically loaded into the class/module that defines it. You...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="RubyInline" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Inline allows you to write foreign code within your ruby code. It
automatically determines if the code in question has changed and
builds it only when necessary. The extensions are then automatically
loaded into the class/module that defines it.</p>

<p>You can even write extra builders that will allow you to write inlined
code in any language. Use Inline::C as a template and look at
Module#inline for the required API.</p>

<p>Changes:</p>

<h3>3.8.5 / 2010-09-01</h3>

<ul>
<li><p>1 bug fix:</p>

<ul>
<li>Added DLDFLAGS to compiler flags to fix OSX linking on 1.9.2</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/rubyinline/">http://rubyforge.org/projects/rubyinline/</a></p></li>
<li><a href="http://rubyinline.rubyforge.org/RubyInline/">http://rubyinline.rubyforge.org/RubyInline/</a></li>
<li><a href="http://www.zenspider.com/ZSS/Products/RubyInline/">http://www.zenspider.com/ZSS/Products/RubyInline/</a></li>
<li><a href="&#109;&#97;i&#108;&#116;&#x6F;:r&#121;&#x61;&#x6E;&#x64;&#x2D;&#x72;&#117;&#98;&#121;&#64;&#122;&#x65;&#x6E;&#115;&#112;&#x69;&#100;&#x65;&#x72;&#x2E;c&#111;&#x6D;">r&#121;&#x61;&#x6E;&#x64;&#x2D;&#x72;&#117;&#98;&#121;&#64;&#122;&#x65;&#x6E;&#115;&#112;&#x69;&#100;&#x65;&#x72;&#x2E;c&#111;&#x6D;</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>minitest version 1.7.1 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/minitest-version-171-has-been.html" />
    <id>tag:blog.zenspider.com,2010://2.587</id>

    <published>2010-09-01T08:32:08Z</published>
    <updated>2010-09-01T08:32:08Z</updated>

    <summary>minitest/unit is a small and fast replacement for ruby&apos;s huge and slow test/unit. This is meant to be clean and easy to use both as a regular test writer and for language implementors that need a minimal set of methods...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="minitest" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>minitest/unit is a small and fast replacement for ruby's huge and slow
test/unit. This is meant to be clean and easy to use both as a regular
test writer and for language implementors that need a minimal set of
methods to bootstrap a working unit test suite.</p>

<p>mini/spec is a functionally complete spec engine.</p>

<p>mini/mock, by Steven Baker, is a beautifully tiny mock object framework.</p>

<p>(This package was called miniunit once upon a time)</p>

<p>Changes:</p>

<h3>1.7.1 / 2010-09-01</h3>

<ul>
<li><p>1 bug fix:</p>

<ul>
<li>1.9.2 fixes for spec tests</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/bfts">http://rubyforge.org/projects/bfts</a></p></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>ZenTest version 4.4.0 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/zentest-version-440-has-been-r.html" />
    <id>tag:blog.zenspider.com,2010://2.586</id>

    <published>2010-09-01T08:27:27Z</published>
    <updated>2010-09-01T08:27:27Z</updated>

    <summary>ZenTest provides 4 different tools: zentest, unit_diff, autotest, and multiruby. ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="ZenTest" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>ZenTest provides 4 different tools: zentest, unit_diff, autotest, and
multiruby.</p>

<p>ZenTest scans your target and unit-test code and writes your missing
code based on simple naming rules, enabling XP at a much quicker
pace. ZenTest only works with Ruby and Test::Unit. Nobody uses this
tool anymore but it is the package namesake, so it stays.</p>

<p>unit_diff is a command-line filter to diff expected results from
actual results and allow you to quickly see exactly what is wrong.</p>

<p>autotest is a continous testing facility meant to be used during
development. As soon as you save a file, autotest will run the
corresponding dependent tests.</p>

<p>multiruby runs anything you want on multiple versions of ruby. Great
for compatibility checking! Use multiruby_setup to manage your
installed versions.</p>

<p>Changes:</p>

<h3>4.4.0 / 2010-09-01</h3>

<ul>
<li><p>1 major enhancement:</p>

<ul>
<li>Removed git building. I'm dropping direct support for rubinius.</li>
</ul></li>
<li><p>3 minor enhancements:</p>

<ul>
<li>Added multiruby  mri:list:x.y.z command so you can see what's available.</li>
<li>Enabled installing specific patch versions of ruby.</li>
<li>multiruby rubygems:update now forces a build to be less confusing.</li>
</ul></li>
<li><p>1 bug fix:</p>

<ul>
<li>Removed redundant test<em>to</em>normal, now in zentest_mappings</li>
</ul></li>
<li><p><a href="http://www.zenspider.com/ZSS/Products/ZenTest/">http://www.zenspider.com/ZSS/Products/ZenTest/</a></p></li>
<li><a href="http://rubyforge.org/projects/zentest/">http://rubyforge.org/projects/zentest/</a></li>
<li><a href="m&#97;&#x69;&#108;&#116;&#111;:&#114;&#121;&#97;&#110;&#100;&#45;r&#117;&#x62;&#121;&#64;&#x7A;&#101;&#110;&#115;&#112;i&#x64;&#x65;&#x72;&#x2E;&#x63;&#111;&#x6D;">&#114;&#121;&#97;&#110;&#100;&#45;r&#117;&#x62;&#121;&#64;&#x7A;&#101;&#110;&#115;&#112;i&#x64;&#x65;&#x72;&#x2E;&#x63;&#111;&#x6D;</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>hoe version 2.6.2 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/09/hoe-version-262-has-been-relea.html" />
    <id>tag:blog.zenspider.com,2010://2.585</id>

    <published>2010-09-01T07:00:41Z</published>
    <updated>2010-09-01T07:00:41Z</updated>

    <summary>Hoe is a rake/rubygems helper for project Rakefiles. It helps you manage and maintain, and release your project and includes a dynamic plug-in system allowing for easy extensibility. Hoe ships with plug-ins for all your usual project tasks including rdoc...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Seattle.rb" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="hoe" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Hoe is a rake/rubygems helper for project Rakefiles. It helps you
manage and maintain, and release your project and includes a dynamic
plug-in system allowing for easy extensibility. Hoe ships with
plug-ins for all your usual project tasks including rdoc generation,
testing, packaging, and deployment.</p>

<p>See class rdoc for help. Hint: <code>ri Hoe</code> or any of the plugins listed
below.</p>

<p>For extra goodness, see: http://seattlerb.rubyforge.org/hoe/Hoe.pdf</p>

<p>Changes:</p>

<h3>2.6.2 / 2010-08-31</h3>

<ul>
<li><p>1 minor enhancement:</p>

<ul>
<li>Updated inline dependency when using inline plugin</li>
</ul></li>
<li><p>1 bug fix:</p>

<ul>
<li>Fixed timebomb to bottom out properly on the end value</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/seattlerb/">http://rubyforge.org/projects/seattlerb/</a></p></li>
<li><a href="http://seattlerb.rubyforge.org/hoe/">http://seattlerb.rubyforge.org/hoe/</a></li>
<li><a href="http://seattlerb.rubyforge.org/hoe/Hoe.pdf">http://seattlerb.rubyforge.org/hoe/Hoe.pdf</a></li>
<li><a href="http://github.com/jbarnette/hoe-plugin-examples">http://github.com/jbarnette/hoe-plugin-examples</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>RubyKoans via autotest</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/08/rubykoans-via-autotest.html" />
    <id>tag:blog.zenspider.com,2010://2.584</id>

    <published>2010-08-25T23:58:07Z</published>
    <updated>2010-08-25T23:58:09Z</updated>

    <summary>rene_mendoza just posted a neat adaptation of autotest for RubyKoans. It uses autotest to run the koans and is complete with coloring. Check it out and enjoy accelerated ruby learning....</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="ZenTest" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>rene_mendoza just posted a <a href="http://blog.zefironetworks.com/?p=1142">neat adaptation</a> of autotest for <a href="http://rubykoans.com/">RubyKoans</a>. It uses autotest to run the koans and is complete with coloring. <a href="http://blog.zefironetworks.com/?p=1142">Check it out</a> and enjoy accelerated ruby learning.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>rake-remote_task version 2.0.1 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2010/07/rake-remote-task-version-201-h.html" />
    <id>tag:blog.zenspider.com,2010://2.583</id>

    <published>2010-07-23T21:01:11Z</published>
    <updated>2010-07-23T21:01:11Z</updated>

    <summary>Vlad the Deployer&apos;s sexy brainchild is rake-remote_task, extending Rake with remote task goodness. Changes: 2.0.1 / 2010-07-23 1 bug fix: Fixed syntax error caused by being anal about 80 col boundary (bleything). http://rubyhitsquad.com/ http://rubyforge.org/projects/hitsquad/...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Vlad the Deployer's sexy brainchild is rake-remote_task, extending
Rake with remote task goodness.</p>

<p>Changes:</p>

<h3>2.0.1 / 2010-07-23</h3>

<ul>
<li><p>1 bug fix:</p>

<ul>
<li>Fixed syntax error caused by being anal about 80 col boundary (bleything).</li>
</ul></li>
<li><p><a href="http://rubyhitsquad.com/">http://rubyhitsquad.com/</a></p></li>
<li><a href="http://rubyforge.org/projects/hitsquad/">http://rubyforge.org/projects/hitsquad/</a></li>
</ul>
]]>
        

    </content>
</entry>

</feed>
