June 2009 Archives

Hoe is a rake/rubygems helper for project Rakefiles. It helps generate rubygems 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.

Plug-ins Provided:

  • Hoe::Clean
  • Hoe::Debug
  • Hoe::Deps
  • Hoe::Flay
  • Hoe::Flog
  • Hoe::Inline
  • Hoe::Package
  • Hoe::Publish
  • Hoe::RCov
  • Hoe::Signing
  • Hoe::Test

See class rdoc for help. Hint: ri Hoe

Changes:

2.3.2 / 2009-06-30

a nice quote

| | Comments (0)

"The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague."

-- Dijkstra

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.

mini/spec is a functionally complete spec engine.

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

(This package was called miniunit once upon a time)

Changes:

1.4.2 / 2009-06-25

Releasing with Hoe

| | Comments (0)

hoe_release.mov (2054 Kb)

I've got other movies up there too from all my presentations and demos.

ETA: I should add, not only is that releasing a new gem, it is also posting news to rubyforge, my blog, and the seattle.rb and ruby-talk mailing lists. I don't have to do anything afterwards.

Hoe plugins providing tasks used by seattle.rb including minitest, perforce, and email providing full front-to-back release/annouce automation.

Changes:

1.2.0 / 2009-06-24

Hoe is a rake/rubygems helper for project Rakefiles. It helps generate rubygems 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.

Plug-ins Provided:

  • Hoe::Clean
  • Hoe::Debug
  • Hoe::Deps
  • Hoe::Flay
  • Hoe::Flog
  • Hoe::Inline
  • Hoe::Package
  • Hoe::Publish
  • Hoe::RCov
  • Hoe::Signing
  • Hoe::Test

See class rdoc for help. Hint: ri Hoe

Changes:

2.3.1 / 2009-06-24

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.1.2 / 2009-06-24

ZenWeb is a set of classes/tools for organizing and formating a website. It is website oriented rather than webpage oriented, unlike most rendering tools. It is content oriented, rather than style oriented, unlike most rendering tools. It provides a plugin system of renderers and filters to provide a very flexible, and powerful system.

Documentation is available in the docs directory, and can be generated into html (in docshtml) simply by running make. See QuickStart and YourOwnWebsite for setup and starting to build a website.

(EXPERIMENTAL) If you are running apache, you might try 'make apache' which will run a private version of apache that points to the generated documenation. Point your browser to port 8080 of localhost or whatever machine you are running on.

Changes:

2.18.1 / 2009-06-23

ZenWeb is a set of classes/tools for organizing and formating a website. It is website oriented rather than webpage oriented, unlike most rendering tools. It is content oriented, rather than style oriented, unlike most rendering tools. It provides a plugin system of renderers and filters to provide a very flexible, and powerful system.

Documentation is available in the docs directory, and can be generated into html (in docshtml) simply by running make. See QuickStart and YourOwnWebsite for setup and starting to build a website.

(EXPERIMENTAL) If you are running apache, you might try 'make apache' which will run a private version of apache that points to the generated documenation. Point your browser to port 8080 of localhost or whatever machine you are running on.

Changes:

2.18.0 / 2009-06-23

  • 1 major enhancement:

    • Transitioned to hoe layout. FIVE YEARS since this was last released!
  • 28 minor enhancements

    • Added CalendarRenderer.
    • Added FileAttachmentRenderer.
    • Added TemplateRenderer. Might not work w/o other files tho... But readable. :)
    • Added colon to the allowed filename regex.
    • Added escape param to include method, defaulting to false.
    • Added metadata: headextra, nakedpage, skip_subpages
    • Added new syntax for automatic div and table markup.
    • Added ordered HTML list support with the "=" delimiter
    • Added several tests.
    • Added style handlers to the HtmlTableRenderer for pretty markup
    • Big push towards HTML 4.0 Strict compliance.
    • Clarified what classes must not modify regular input in a test.
    • Cleaned TextToHtmlRenderer by switching to a case for most stuff.
    • Cleaned and fixed tests.
    • Cleaned up FileAttachmentRenderer using new scan_region.
    • Cleaned up all render tests to go directly against renderer.
    • Enhanced GenericRenderer.scan_region to make it much easier for developers.
    • Enhanced HtmlTableRenderer to be more customizable.
    • Extended GenericRenderer#scan_region to pass the context to the yield block.
    • Lots of work in tests to make cleaner/better.
    • Made tests a TON faster (2x) by removing most calls to renderContent.
    • Modified RubyCodeRenderer to use tags instead of ! lines.
    • Revamped a number of tests.
    • Switched HtmlTableRenderer to scan by line, not by paragraph.
    • Workaround added until a bug is fixed in ruby (should be in 1.8.2). This speeds up ZenWeb by 50% on my website. (HAHA!)
    • head_extra allows you to inject into the header (for JS mostly).
    • naked_page turns off nearly all of the page template.
    • skip_subpages turns off subpage injection.
  • 10 bug fixes

    • Couldn't call parent on the top page.
    • Fixed a bug in HtmlTableRenderer when a paragraph butts up against it.
    • Fixed a bug in the doco.
    • Fixed a problem where files with dashes in their names were rejected.
    • Fixed a validation issue w/ divs inside tables.
    • Fixed includes in makefile. Improved pre-test syntax checks.
    • Fixed scan_region so it preserves all whitespace as-is.
    • Fixed some HTML issues and a bug accidentally merging the event array
    • ICBM metadata was missing a newline.
    • TextToHtmlRenderer no longer wraps in P tags if it detects a block tag.
  • http://rubyforge.org/projects/zenweb/

THREE HUNDRED!

| | Comments (0)

I just finished my release flood and we cracked release #300!

We're now up to 321 (we started at 297)! Buy stuff off my amazon wishlist or I'll keep releasing until all your mailboxes fill up! :P

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 Test::Unit. Nobody uses this tool anymore but it is the package namesake, so it stays.

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

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.

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

Changes:

4.1.3 / 2009-06-23

Lets you set the class of an object. Use at your own risk.

Changes:

1.0.1 / 2009-06-23

un provides unextend and uninclude to allow for a better prototype-oriented programming experience.

Changes:

1.0.1 / 2009-06-23

PNG is an almost-pure-ruby PNG library. It lets you write a PNG without any C libraries.

Changes:

1.2.0 / 2009-06-23

  • 26 minor enhancements:

    • Add load_metadata flag to PNG.load to extract dimensions and depth.
    • Add pure-ruby versions back for pngjoin and pngcrc.
    • Added Canvas#composite(canvas, x, y, style) with overwrite, underlay, overlay, and blend.
    • Added Canvas#each, passes x, y, color.
    • Added Canvas#extract.
    • Added Color#|, Background color is effective false.
    • Added Font#coordinates and cached each letter when extracted.
    • Added PNG::load_file.
    • Added reader tests.
    • Added tests for PNG::Font.
    • Added tests for PNG::load.
    • Added to/from hsv methods to Color.
    • Clean up tests to remove duplication.
    • Cleaned up Color#to_ascii to make much easier to read and extend.
    • Cleaned up a fair amount of code, removing as many raw literals as possible.
    • Color#blend is a simple averaging algorithm now.
    • Extended reader to include RGB as well, paving the way for grayscale.
    • Fake support for RGB as well as RGBA (default alpha to 255).
    • Made reader work again (was flipped and all sorts of broken).
    • Split out reader.
    • Switched to minitest.
    • Time to refactor PNG::Font to use #extract and #composite...
    • Updated Rakefile to new hoe capabilities.
    • Updated manifest.
    • metadata_only now cleaner.
    • read_IHDR now returns height, width instead of a canvas.
  • 3 bug fixes:

    • Fixed example/lines and added text.
    • Fixes for 1.9.
    • Ignore color profile if it exists (fixes problems on osx screenshots).
  • http://seattlerb.rubyforge.org/

ImageScience is a clean and happy Ruby library that generates thumbnails -- and kicks the living crap out of RMagick. Oh, and it doesn't leak memory like a sieve. :)

For more information including build steps, see http://seattlerb.rubyforge.org/

Changes:

1.2.0 / 2009-06-23

  • 7 minor enhancements:

    • Moved quickthumb to bin/imagescience_thumb and properly added.
    • Added -s (square) flag to bin/imagesciencethumb
    • Added autorotating on image load. (choonkeat)
    • Added ruby_inline to clean globs
    • Added withimagefrom_memory. (sumbach)
    • Switched to minitest.
    • Updated rakefile for now hoe capabilities.
  • 3 bug fixes:

    • Check and convert to 24 BPP if save type is jpg. Caused by 32bpp png to jpg.
    • Fixed 1.9isms
    • Fixed BMP support. Tweaked whitespace.
  • http://seattlerb.rubyforge.org/ImageScience.html

  • http://rubyforge.org/projects/seattlerb

Wilson is a pure ruby x86 assembler. No, really. Worst Idea Evar.

Why "wilson"? I wanted to name it "metal", but there is an existing project with that name... So I'm naming it after Wilson Bilkovich, who is about as metal as you can get (and it is easier to spell than "bilkovich", even tho that sounds more metal).

Changes:

1.1.1 / 2009-06-23

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 a clean way to redefine a bottleneck method so you can account for and aggregate all the calls to it.

% 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

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):

% 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'

Changes:

1.1.0 / 2009-06-23

rubytoc translates a static ruby subset to C. Hopefully it works.

NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE

                 THIS IS BETA SOFTWARE!

NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE

RubyToC has the following modules:

  • Rewriter - massages the sexp into a more consistent form.
  • TypeChecker - type inferencer for the above sexps.
  • RubyToRubyC - converts a ruby (subset) sexp to ruby interals C.
  • RubyToAnsiC - converts a ruby (subset) sexp to ANSI C.

and the following tools:

  • translate.rb - Translates a given file to C.

Changes:

1.0.0.6 / 2009-06-23

1 major enhancement:

  • Switched from ParseTree to ruby_parser for 1.9 compatibility. woo.
    • All translate/process methods are gone since we can't reflect at runtime.

43 minor enhancements:

  • Added IterRewriter for finding free variables in iter nodes.
  • Added dxstr.
  • Added lots of new and missing tests
  • Added not, array, litlongnegative, litrange[23], litregexp{n,once}, litsym{,splat}
  • Added pct_w tests
  • Added processdefx to rubytoansic.rb
  • Added test data for arraypctW, arraypctWdstr, attrasgnindexequals, attrasgnindexequalsspace, and attrset.
  • Added tests for "and". PONG to eric
  • Added to_ary and masgn for TypeChecker.
  • Added xstr support.
  • Added yield(*ary)
  • Cleaned up rewriter.rb and made changes for pt_testcase.rb
  • Cleaned up some free_vars processing code.
  • Converted everything to new enhanced PTTC test scheme.
  • Enhanced with_scope to allow for static arrays.
  • Extended Environment to separately store both types and values.
  • Extern methods to support rbiterate, including #each and #eachwith_index.
  • Free var static declarations for C layers.
  • Merged IterRewriter into CRewriter and make typed.
  • Migrated as much out of rewriter as possible.
  • Modernized via hoe.
  • Moved to full PTTC + UnifiedRuby.
  • Pulled dstr up from ZenObfuscator.
  • Pulled up tests, processargs, withscope, and process_scope from obfuscator
  • Pushed unique.rb up to PT
  • Removed Environment methods that pushed up to ruby_parser.
  • Removed Sexp#sexp_type
  • Removed accessor, accessor_equals since they don't exist in PTTC.
  • Removed bin/*
  • Removed dead test
  • Removed redundant defnlvarboundary, but added call to lvardefboundary.
  • Renamed blocks to extramethods in rubytorubyc.
  • Renamed environment.rb to r2cenvironment.rb (incl tests)
  • Renamed iterfunctions to extramethods in crewriter.
  • Reordered so RubyToRubyC was always after RubyToAnsiC.
  • Some optimizations cleaning up Type#method_missing. Drops test time ~30%.
  • Split rewriter.rb to crewriter.rb (and renamed class to CRewriter).
  • Split up and deleted support.rb (and tests).
  • Switched from makefile to rakefile.
  • Switched to minitest
  • Test or node.
  • Track and trigger changes on pt_testcase.rb and r2ctestcase.rb
  • Used Hoe#addincludedirs to clean up rakefile.

    • 12 bug fixes:
  • Fix types in iter rewriting.

  • Fix yield([42, 24])
  • Fixed 1.9-isms.
  • Fixed all rubygems loaders.
  • Fixed dependencies on all tests.
  • Fixed for new (incompatible?) Environment supplied by SexpProcessor
  • Fixed incompatibility with new inline changes.
  • Fixed requires on ruby_parser
  • Fixed ruby2c to work with autotest.
  • Fixed tests in r2ctestcase for all layers except the C layers.
  • Fixed zentest dependency in rakefile
  • Fixes for RAD, mostly renaming environment.rb to r2cenvironment.rb at this stage.

Gauntlet is a pluggable means of running code against all the latest gems and storing off the data.

Changes:

1.1.0 / 2009-06-23

  • 6 minor enhancements:

    • Added update command
    • Added example plugin lib/gauntlet_grep.rb
    • Added subcommands: help list report
    • Cleaned output
    • Updated to new hoe capabilities
    • gauntlet now runs in a unique subdirectory, so multiple can run at once
  • http://rubyforge.org/projects/seattlerb

Vlad the Deployer is pragmatic application deployment automation, without mercy. Much like Capistrano, but with 1/10th the complexity. Vlad integrates seamlessly with Rake, and uses familiar and standard tools like ssh and rsync.

Impale your application on the heartless spike of the Deployer.

Changes:

1.4.0 / 2009-06-23

  • 1 major enhancement:

    • Switched to passenger as default app server.
  • 11 minor enhancements:

    • #rsync now takes ANY number of arguments and expects to you add "host:".
    • Added Rake::RemoteTask#get.
    • Added doco for why we don't ship a deploy task
    • Added links to example maintenance recipes
    • Added multi-env doco to getting_started.txt
    • Added svn-over-ssh faq item. gah.
    • Flipped tests to minitest
    • Merged global #role and Rake::RemoteTask::role.
    • Moved all global methods to Rake::RemoteTask and wrote #external to clean up.
    • Moved rake extensions to hoe so everyone can enjoy the fun.
    • put names the tempfile based on the remote path to ease debugging
  • 2 bug fixes:

    • passenger:startapp wasn't using the latestrelease path
    • set/fetch wasn't dealing with a default of false well. (Seth Falcon)
  • http://rubyhitsquad.com/

  • http://rubyforge.org/projects/hitsquad/

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.3.0 / 2009-06-23

  • 5 minor enhancements:

    • Added --summary to display flay scores per file.
    • Added --verbose to display processing progress.
    • Protect against syntax errors in bad code and continue flaying.
    • Removed fuzzy matching. Never got it to feel right. Slow. Broken on 1.9
    • Renamed --verbose to --diff.
  • http://ruby.sadi.st/

  • http://rubyforge.org/projects/seattlerb

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.1.1 / 2009-06-23

Heckle is unit test sadism(tm) at it's core. Heckle is a mutation tester. It modifies your code and runs your tests to make sure they fail. The idea is that if code can be changed and your tests don't notice, either that code isn't being covered or it doesn't do anything.

It's like hiring a white-hat hacker to try to break into your server and making sure you detect it. You learn the most by trying to break things and watching the outcome in an act of unit test sadism.

Changes:

1.4.3 / 2009-06-23

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't have to write C.

% 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)

Changes:

1.0.1 / 2009-06-23

ruby2ruby provides a means of generating pure ruby code easily from ParseTree's Sexps. This makes making dynamic language processors much easier in ruby than ever before.

Changes:

1.2.3 / 2009-06-23

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.

As an example:

def conditional1(arg1) if arg1 == 0 then return 1 end return 0 end

becomes:

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)))))

Changes:

2.0.3 / 2009-06-23

  • 4 minor enhancements:

    • Removed dead code handling d/regex match node cruft.
    • Switched to minitest
    • Updated .autotest and rakefile wrt rcov for new hoe capabilities
    • Updated hoe for new capabilities
  • 4 bug fixes:

    • Environment#all now deals with strange edge cases in RAD.
    • Fixed packaging/compilation issue.
    • Minor 1.9 fixes
    • hoe -> flay -> rubyparser rakefile circularity fixed
  • http://parsetree.rubyforge.org/

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.

As an example:

def conditional1(arg1) if arg1 == 0 then return 1 end return 0 end

becomes:

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

Changes:

3.0.4 / 2009-06-23

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.2 / 2009-06-23

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 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.

Changes:

3.8.2 / 2009-06-23

minitesttushim bridges the gap between the small and fast minitest and ruby's huge and slow test/unit.

Changes:

1.3.1 / 2009-06-23

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.

mini/spec is a functionally complete spec engine.

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

(This package was called miniunit once upon a time)

Changes:

1.4.1 / 2009-06-23

  • 1 major enhancement:

    • Handle ^C and other fatal exceptions by failing
  • 1 minor enhancement:

    • Added something to catch mixed use of test/unit and minitest if $DEBUG
  • 1 bug fix:

    • Added SIGINFO handler for finding slow tests without verbose
  • http://rubyforge.org/projects/bfts

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.

mini/spec is a functionally complete spec engine.

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

(This package was called miniunit once upon a time)

Changes:

1.4.1 / 2009-06-23

  • 1 major enhancement:

    • Handle ^C and other fatal exceptions by failing
  • 1 minor enhancement:

    • Added something to catch mixed use of test/unit and minitest if $DEBUG
  • 1 bug fix:

    • Added SIGINFO handler for finding slow tests without verbose
  • http://rubyforge.org/projects/bfts

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 Test::Unit. Nobody uses this tool anymore but it is the package namesake, so it stays.

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

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.

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

Changes:

4.1.2 / 2009-06-23

Hoe plugins providing tasks used by seattle.rb including minitest, perforce, and email providing full front-to-back release/annouce automation.

Changes:

1.1.1 / 2009-06-22

Hoe is a rake/rubygems helper for project Rakefiles. It helps generate rubygems 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.

Plug-ins Provided:

  • Hoe::Clean
  • Hoe::Debug
  • Hoe::Deps
  • Hoe::Flay
  • Hoe::Flog
  • Hoe::Inline
  • Hoe::Package
  • Hoe::Publish
  • Hoe::RCov
  • Hoe::Signing
  • Hoe::Test

See class rdoc for help. Hint: ri Hoe

Changes:

2.3.0 / 2009-06-23

  • 1 major enhancement:

    • Plugins can no longer be self-activating.
  • 8 minor enhancements:

    • All hoe plugins are pre-activated.
    • Allow RDoc title to be set via specextras['rdocoptions'].
    • Cleaned up plugin activation.
    • History intuition extended for markdown. drnic/jbarnette
    • Move RDoc task requires to hoe/publish.rb.
    • Only activated plugins are loaded, extended, and activated.
    • Plugin loading deferred until hoe-spec creation, allowing proper meta-plugins.
    • inline plugin adds RubyInline dependency and hooks clean task.
  • 2 bug fixes:

    • Fixed developer load order error in load_plugins.
    • rcov should use test_globs. apatterson
  • http://rubyforge.org/projects/seattlerb/

  • http://seattlerb.rubyforge.org/hoe/
  • ryand-ruby@zenspider.com

Getting there...

| | Comments (0)
seattlerb_dashboard.png

closer and closer...

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.

mini/spec is a functionally complete spec engine.

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

(This package was called miniunit once upon a time)

Changes:

1.4.0 / 2009-06-18

  • 5 minor enhancement:

    • Added clarification doco.
    • Added specs and mocks to autorun.
    • Changed spec test class creation to be non-destructive.
    • Updated rakefile for new hoe capabilities.
    • describes are nestable (via subclass). before/after/def inherits, specs don't.
  • 3 bug fixes:

    • Fixed location on must/wont.
    • Switched to __name__ to avoid common ivar name.
    • Fixed indentation in test file (1.9).
  • http://rubyforge.org/projects/bfts

Hoe plugins providing tasks used by seattle.rb including minitest, perforce, and email providing full front-to-back release/annouce automation.

Changes:

1.1.0 / 2009-06-17

Hoe is a rake/rubygems helper for project Rakefiles. It helps generate rubygems 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.

Plug-ins Provided:

  • Hoe::Clean
  • Hoe::Debug
  • Hoe::Deps
  • Hoe::Flay
  • Hoe::Flog
  • Hoe::Inline
  • Hoe::Package
  • Hoe::Publish
  • Hoe::RCov
  • Hoe::Signing
  • Hoe::Test

See class rdoc for help. Hint: ri Hoe

Changes:

2.2.0 / 2009-06-17

  • 8 minor enhancements:

    • Alter task descriptions to say what plugin they come from. jbarnette
    • Fix and improve generate_key task. Patch #20441 by Matthew Kent.
    • Hoe.plugin can take multiple names. jbarnette
    • Increase configurability of RDoc tasks. Patch #19597 by Sylvain Joyeux.
    • Refactored and renamed email task to debug_email, removed from announce.
    • Removed email task from announce task.
    • Switched to seattlerb plugin
    • checkextradeps now installs developer dependencies as well
  • 3 bug fixes:

    • Fixed blogs entry in DEFAULT_CONFIG.
    • activated but missing plugins are properly skipped now
    • exclude field was missing from DEFAULT_CONFIG
  • http://rubyforge.org/projects/seattlerb/

  • http://seattlerb.rubyforge.org/hoe/
  • ryand-ruby@zenspider.com

Corey sez "I decided to see what sort of speed-up I could get just doing a straight brute-force sort. First, I wanted a pure Ruby implementation. Next, I wanted a RubyInline version. Finally, I wanted to use RubyInline with Thrust. Here is the code I used."

The numbers? Bad ASS!

(Thrust is a C++ library that uses the GPU for parallel operations.)

Hoe 2, Electric Boogaloo

| | Comments (2)

What is Hoe?

Hoe is a library that provides extensions to rake to automate every step of the development process from genesis to release. It provides project creation, configuration, and a multitude of tasks including project maintenance, testing, analysis, and release. We found rake to be an incredible vehicle for functionality in the abstract, but decidedly lacking in concrete functionality. We filled in all the blanks we could through a "hoe-spec":

require "hoe"
Hoe.spec "project_name" do
  developer "Ryan Davis", "ryand-ruby@zenspider.com"
  # ...
end

This hoe-spec specifies everything about your task that is different from the defaults and from that, creates a multitude of tasks and a gemspec used for packaging and release. When you update hoe, you update all your projects that use hoe. That's it. Nothing more is needed. Everything is DRY.

Hoe plugins providing tasks used by seattle.rb.

Changes:

1.0.0 / 2009-06-14

Hoe is a rake/rubygems helper for project Rakefiles. It helps generate rubygems 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.

Plug-ins Provided:

  • Hoe::Clean
  • Hoe::Debug
  • Hoe::Deps
  • Hoe::Flay
  • Hoe::Flog
  • Hoe::Inline
  • Hoe::Package
  • Hoe::Publish
  • Hoe::RCov
  • Hoe::Signing
  • Hoe::Test

See class rdoc for help. Hint: ri Hoe

Changes:

2.1.0 / 2009-06-14

hey, joe

| | Comments (1)
spec.has_rdoc = false == jackass

(no, this is not directed towards joe o'brien... duh)

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 Test::Unit. Nobody uses this tool anymore but it is the package namesake, so it stays.

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

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.

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

Changes:

4.1.1 / 2009-06-03

commit 5000!

| | Comments (0)

holy crap! one year later and we're at commit 5000! Thanks to everyone who's contributed directly and indirectly towards hitting the big 5k!

% p4 changes -m 1008 | tail -1000 | cut -f 6 -d\  | cut -f 1 -d@ | occur
  838: ryand
  132: drbrain
   19: yoshuki
    6: evan
    3: wilson
    2: luislavena

and check it, we're accelerating:

commit #1000 took 1274 days
commit #2000 took 1065 days
commit #3000 took  655 days
commit #4000 took  489 days
commit #5000 took  358 days

This is an autotest plugin to provide rails support. It provides basic rails support and extra plugins for migrations and fixtures.

Changes:

4.1.0 / 2009-06-03

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 Test::Unit. Nobody uses this tool anymore but it is the package namesake, so it stays.

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

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.

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

Changes:

4.1.0 / 2009-06-03

  • 1 major enhancement:

    • Removed all plugins I don't want to maintain anymore. (gem inst autotest-rails)
  • 4 minor enhancements:

    • Added #blur to focus.rb to nuke all other test classes
    • Clear RUBYOPT before installs (balatero)
    • Removed test/unit include in zentest so we can focus on miniunit
    • sort versions for builds. (Jens Wille)
  • 6 bug fixes:

    • Fixed a stupid bug when running on some versions of bash >= 3.2.x and using '&>' in a system call. (Jens Wille)
    • Fixed inconsistent test commands in autotest. (jbarnette)
    • Fixed unit_diff's usage generation when installed as gem. (borior)
    • Fixed zentest to deal with unnamed classes. (Bill Dortch)
    • Removed buggy/unused -l support in unit_diff. (borior)
    • make twice to make it more resilient to makefile parallel bugs
  • http://www.zenspider.com/ZSS/Products/ZenTest/

  • http://rubyforge.org/projects/zentest/
  • ryand-ruby@zenspider.com

Hoe is a rake/rubygems helper for project Rakefiles. It helps generate rubygems 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.

Plug-ins Provided:

  • Hoe::Clean
  • Hoe::Debug
  • Hoe::Deps
  • Hoe::Flay
  • Hoe::Flog
  • Hoe::Inline
  • Hoe::Package
  • Hoe::Publish
  • Hoe::RCov
  • Hoe::Signing
  • Hoe::Test

See class rdoc for help. Hint: ri Hoe

Changes:

2.0.0 / 2009-06-02

  • 3 major enhancements:

    • Added a plugin system and extracted nearly everything into separate plugins.
    • Added Clean, Debug, Deps, Flay, Flog, Inline, Package, Publish, Rake, Rcov, Signing, and Test plugins
  • 9 minor enhancements:

    • Added Hoe::spec replacing old Hoe.new spec form. Now with DSL flavors!
    • Added DEFAULT_CONFIG so plugins can add to it.
    • Added pluggable! to declare your package depends on rubygems 1.3.1+.
    • Changes are now included in the gem's description.
    • Deprecated Hoe.new spec form.
    • Filled in all the blanks on rdoc.
    • Refactored nearly all the spec logic down to much smaller/cleaner pieces.
    • Updated templates to use new form. No clue how best to update yours. :P
    • Version number is now auto-searchable by grepping in all the files.
  • http://rubyforge.org/projects/seattlerb/

  • http://seattlerb.rubyforge.org/hoe/
  • ryand-ruby@zenspider.com

About this Archive

This page is an archive of entries from June 2009 listed from newest to oldest.

May 2009 is the previous archive.

July 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.32-en