quick heads up regarding Echoe 3.0.1, GitHub and publishing to RubyForge
Make sure your Manifest file is up to date before firing off the Echoe’s :release task for publishing your Ruby gem to RubyForge. I had changed my README file to be named README.textile to make use of GitHub’s README rendering in their source browser but had forgotten to update the Manifest.
Today, I wanted to publish google-geo to RubyForge, and when I fired off the release with my outdated Manifest, this was the error I got:
_\m/ google-geo | rake release --trace
(in /Users/seth/p/google-geo)
** Invoke release (first_time)
** Invoke clean (first_time)
** Execute clean
Cleaning
** Invoke package (first_time)
** Invoke pkg/google-geo-2.1.tar.gz (first_time)
** Invoke pkg/google-geo-2.1 (first_time)
** Invoke CHANGELOG (first_time, not_needed)
** Invoke lib/google/geo.rb (first_time, not_needed)
** Invoke LICENSE (first_time, not_needed)
** Invoke Rakefile (first_time, not_needed)
rake aborted!
Don't know how to build task 'README'
Clearly, this is not the most obvious direction to the source of the problem. Why is it generating and invoking Rake tasks for file names? Why is it invoking things that are “not_needed”? Yeesh.
After wading through the source code, I eventually realized that Echoe was trying to build the list of files for the gem spec based on the Manifest. I still don’t understand how it ends up that Rake invokes a task named after a file, but that’s beside the point here. I checked the Manifest and saw that it was out of date, and I recalled that the Echoe documentation encourages you to run the :manifest task before :release. Mystery solved.
All this aside, I think it would be reasonable if the :release task ran :manifest for me, avoiding the potential for this confusion entirely.



leave a comment