Farmer Ted came to me the other day with a problem. He has about 10 different packages he wants to work on and periodically release, but sometimes it seems to him that maintaining a threshing machine is easier than it is maintaining all his Rakefiles and gemspecs. Most of his rakefiles are duplicated in every project yet differ slightly everywhere. His deployment rules that enhanced in one place and go stale in another. So I showed him another tool to help: Hoe!
Hoe is a tool that covers all the usual stuff you have in a project: documentation, testing, version compatibility (through multiruby), packaging, deployment, cleanup, and more. In fact, this:
<pre>require 'rubygems'
require 'hoe'
Hoe.new("thingy", '1.0.0') do |p|
p.rubyforge_name = "myproject"
p.summary = "I'm so happy that I don't have to write this stuff anymore."
end
gets you all of this for free:
% rake -T
rake audit # Run ZenTest against the package
rake clean # Clean up all the extras
rake clobber_docs # Remove rdoc products
rake clobber_package # Remove package products
rake default # Run the default tasks
rake deploy # Deploy the package to rubyforge.
rake docs # Build the docs HTML Files
rake install # Install the package. Uses PREFIX and RUBYLIB
rake multi # Run the test suite using multiruby
rake package # Build all the packages
rake redocs # Force a rebuild of the RDOC files
rake repackage # Force a rebuild of the package files
rake test # Run the test suite. Use FILTER to add to the command line.
rake uninstall # Uninstall the package.
rake upload # Upload RDoc to RubyForge
Farmer Ted tried it out and he's much <em>much</em> happier now.
Hoe is real young right now. Rough around the edges. Undocumented. Etc. You've been warned. That said, please try it out and let me know what you think.
Since REAP tasks can be used as rake tasks, there seems to me to be a lot of overlap between the two projects. Yes? No?
Kirk Haines
···
On Wed, 20 Sep 2006, Ryan Davis wrote:
Farmer Ted came to me the other day with a problem. He has about 10 different packages he wants to work on and periodically release, but sometimes it seems to him that maintaining a threshing machine is easier than it is maintaining all his Rakefiles and gemspecs. Most of his rakefiles are duplicated in every project yet differ slightly everywhere. His deployment rules that enhanced in one place and go stale in another. So I showed him another tool to help: Hoe!
Hoe is a tool that covers all the usual stuff you have in a project: documentation, testing, version compatibility (through multiruby), packaging, deployment, cleanup, and more. In fact, this:
Ryan, this sounds very cool. Daniel Berger and I wrote a tool for
interfacing with RAA a while ago and I haven't gotten around to
releasing it. Maybe I can donate this to Hoe so it can do RAA entry
updates too?
On 9/20/06, Ryan Davis <ryand-ruby@zenspider.com> wrote:
Hoe is a tool that covers all the usual stuff you have in a project:
documentation, testing, version compatibility (through multiruby),
packaging, deployment, cleanup, and more. In fact, this:
Farmer Ted came to me the other day with a problem. He has about 10
different packages he wants to work on and periodically release, but
sometimes it seems to him that maintaining a threshing machine is
easier than it is maintaining all his Rakefiles and gemspecs. Most of
his rakefiles are duplicated in every project yet differ slightly
everywhere. His deployment rules that enhanced in one place and go
stale in another. So I showed him another tool to help: Hoe!
Hoe is a tool that covers all the usual stuff you have in a project:
documentation, testing, version compatibility (through multiruby),
packaging, deployment, cleanup, and more. In fact, this:
<pre>require 'rubygems'
require 'hoe'
Hoe.new("thingy", '1.0.0') do |p|
p.rubyforge_name = "myproject"
p.summary = "I'm so happy that I don't have to write this stuff
anymore."
end
I'm already excited to see how many gems will appear to be published
by you, just because people forget to change the default values.
sudo gem install hoe
Thank you for also providing a tar.gz and making hoe.rb even check if
rubygems exists. define_tasks still tries to access
Gem::Specification which won't be there in that case, though.
This communication is the property of Qwest and may contain confidential or
privileged information. Unauthorized use of this communication is strictly
prohibited and may be unlawful. If you have received this communication
in error, please immediately notify the sender by reply e-mail and destroy
all copies of the communication and any attachments.
···
-----Original Message-----
From: khaines@enigo.com [mailto:khaines@enigo.com]
Sent: Wednesday, September 20, 2006 8:16 AM
To: ruby-talk ML
Subject: Re: [ANN] Hoe 1.0 released
On Wed, 20 Sep 2006, Ryan Davis wrote:
> Farmer Ted came to me the other day with a problem. He has about 10
> different
> packages he wants to work on and periodically release, but
sometimes it seems
> to him that maintaining a threshing machine is easier than
it is maintaining
> all his Rakefiles and gemspecs. Most of his rakefiles are
duplicated in every
> project yet differ slightly everywhere. His deployment
rules that enhanced in
> one place and go stale in another. So I showed him another
tool to help: Hoe!
>
> Hoe is a tool that covers all the usual stuff you have in a project:
> documentation, testing, version compatibility (through
multiruby), packaging,
> deployment, cleanup, and more. In fact, this:
Sounds like your tool is more akin to codeforpeople's rubyforge project than it is hoe. It'd probably be better to merge into that (although it is purposefully a one trick pony, so maybe they should just be friends).
···
On Sep 20, 2006, at 11:34 AM, Gregory Brown wrote:
On 9/20/06, Ryan Davis <ryand-ruby@zenspider.com> wrote:
Hoe is a tool that covers all the usual stuff you have in a project:
documentation, testing, version compatibility (through multiruby),
packaging, deployment, cleanup, and more. In fact, this:
Ryan, this sounds very cool. Daniel Berger and I wrote a tool for
interfacing with RAA a while ago and I haven't gotten around to
releasing it. Maybe I can donate this to Hoe so it can do RAA entry
updates too?
I'm already excited to see how many gems will appear to be published
by you, just because people forget to change the default values.
Yeah, I thought about changing that but then I decided it'd be funny.
sudo gem install hoe
Thank you for also providing a tar.gz and making hoe.rb even check if
rubygems exists. define_tasks still tries to access
Gem::Specification which won't be there in that case, though.
Actually, I just took out the check. And the current version (soon to be released) will actually declare its own dependencies on rubygems, rake, and rubyforge properly (and only on hoe if used by anything else). Politics and release philosophies aside, it is too easy and benefits enough other people to build and deploy a gem using hoe, so hoe users might as well install it.
···
On Sep 23, 2006, at 5:48 AM, Christian Neukirchen wrote:
% find reap-6.0.2/lib/ -type f -name "*.rb" | xargs wc -l | tail -1
3191 total
% find rake-0.7.1/lib/ -type f -name "*.rb" | xargs wc -l | tail -1
3201 total
The discussion of what the actual line counts of the projects are, though, seems to be a diversion away from my question.
I am actually interested in where capabilities between reap and rake+hoe overlap and differ, and I figured that you must have looked at reap before writing your own set of tools and would have some constructive thoughts on the differences.
Thanks,
Kirk Haines
···
On Thu, 21 Sep 2006, Ryan Davis wrote:
On Sep 20, 2006, at 7:15 AM, khaines@enigo.com wrote:
This is kinda weird because I had a dream the other night that I'd
written a piece of software called "Hoe". But I don't remember what
this dream software did. Now I know!
···
On 9/20/06, Berger, Daniel <Daniel.Berger@qwest.com> wrote:
Farmer Ted likes simplicity and clarity, not obfuscation and bulk:
% find hoe -type f | grep -v svn | xargs wc -l | tail -1
345 total
% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find facets-1.7.46 -type f | xargs wc -l | tail -1
67091 total
Since REAP tasks can be used as rake tasks, there seems to me to be a lot of overlap between the two projects. Yes? No?
no, there is very little overlap, because my project is so small.
At least compare apples to apples there.
% find reap-6.0.2/lib/ -type f -name "*.rb" | xargs wc -l | tail -1
3191 total
% find rake-0.7.1/lib/ -type f -name "*.rb" | xargs wc -l | tail -1
3201 total
You need to learn your fruits! It just so happens Farmer Ted is a fruit farmer these days and even he agrees your rebuke is without merit. You yourself asked "How does the use case for Hoe differ from REAP" and that is what I compared. Besides, by just comparing .rb files you're hiding plenty of complexity:
% find reap-6.0.2 -type f | xargs wc -l | tail -1
16301 total
% find rake-0.7.1 -type f | xargs wc -l | tail -1
8694 total
I don't write rake. I don't maintain rake. I get it for free so it isn't my problem and isn't part of the comparison. If you want to ask someone to compare/contrast how reap and rake differ, ask trans and jim, not me.
The discussion of what the actual line counts of the projects are, though, seems to be a diversion away from my question.
I am actually interested in where capabilities between reap and rake+hoe overlap and differ, and I figured that you must have looked at reap before writing your own set of tools and would have some constructive thoughts on the differences.
No, I never looked at reap. I wouldn't touch it or facets with someone else's ten foot pole.
···
On Sep 20, 2006, at 11:26 AM, khaines@enigo.com wrote:
On Thu, 21 Sep 2006, Ryan Davis wrote:
On Sep 20, 2006, at 7:15 AM, khaines@enigo.com wrote:
I am actually interested in where capabilities between reap and rake+hoe
overlap and differ, and I figured that you must have looked at reap before
writing your own set of tools and would have some constructive thoughts on
the differences.
From first apperances clearly they cover many of the same needs: rdoc,
test, gem creation, uploading to Rubyforge, etc. Of course there are
some non-overlaps in functionality too and in that regard Reap has a
slight advantage. But capabilites aside. Reap is much more its own
entity. Hoe is really an extension to Rake that ties in a some other
tools as well (multiruby, rubyforge script). So Reap has one dependency
(Facets) while Hoe has many. Reap can handle odd cases as it is a
general system. Hoe is basically a used in one specific way. There are
of course trade offs to either approach. And certainly I can see Hoe
being a great little tool. After all, Hoe is basically what Reap used
to be. But while Hoe is essentially all that it will ever be (less a
few more tasks). Reap is still largely coming into it's own.Utlimately
it will be a bed rock of build scripts that can do just about any
general tak one can expect, even cross-language. In other words Reap
has a much larger vision. It's really the same inspiration behind
Facets. Offer a LOT of capability and make it as easy as possible to
use.
HTH,
T.
P.S. It's a bit ironic for this comes up now. I've just spent the last
two months taking Reap to the "next level". I had hoped to release by
now, but I think I still have a week or so to go before an initial
release is reasonable. It's looking very nice. The extra time has been
well worth it!