[ANN] RubyGems 0.3.0

Hello all,

We have just released another alpha of the RubyGems package manager.
It’s been too long since the last release, but not for lack of work
going on. We’ve got a bunch of new features, a significant amount of
cleanup, and possibly a few new bugs (but we hope not). Your
experience reports during this alpha phase are much appreciated. The
first release brought in a lot of gems, a good number of patches, and
some very insightful ideas about RubyGems’ design and functionality
(some of which remain unresolved). The more the merrier.

Here’s a dump from the release notes:

Release 0.3.0: April 30, 2004

  • Creation of Application Gems (packages that include executable
    programs). See
    http://rubygems.rubyforge.org/wiki/wiki.pl?DeveloperGuide for
    information on how to use it.
  • Basic functionality for installing binary gems from source
    (:extensions property of gem specification holds an array of paths to
    extconf.rb files to be used for compilation)
  • Install library “stub” allowing a normal ‘require’ to work (which
    then does the rubygems require and ‘require_gem’
  • –run-tests runs the test suite specified by the "test_suite_file"
    property of a gem specification
  • HTTP Proxy support is verified to work. Full rewrite of HTTP code
    for remote installation.
  • Cleanup of command-line arguments and handling. Most commands
    accept a --local or --remote modifier.
  • Unit and functional tests added (see Rakefile).
  • Prompt before remote-installing dependencies during gem
    installation.
  • Config file for storing preferences for ‘gem’ command usage.
  • Generally improved error messages (still more work to do)
  • Rearranged gem directory structure for cleanliness.

We have ever-growing documentation at
http://rubygems.rubyforge.org/wiki/wiki.pl and an ever growing pool of
gems at http://gems.rubyforge.org/.

Keep those gems coming! Rich is soon going to turn on a script that
auto-deploys gems that are released on RubyForge into the gem
repository (so they will be automatically available for automated
remote installation).

Let us know on the RubyGems mailing list if you have problems or ideas
(http://rubyforge.org/mail/?group_id=126)

Thanks,
Chad

Chad Fowler wrote:

  • Install library “stub” allowing a normal ‘require’ to work (which
    then does the rubygems require and ‘require_gem’

Suggestion on above, you could actually do something interesting with
this, if you could figure out the minimum required to generate the gem
system. You could actually set it up so the very basic require in a
package if it hit one of these stubs would auto-install the gem system
if it couldn’t find it. IE have some sort of gem bootstrap code, that
could regenterate the gem system if it was lacking, assuming it’s not
just packaged with ruby anyway.

Anyways, comments on first running it, having not installed version .2.
I had also not installed rake before but figured I would use this
chance to check it out. gem -i rake worked fine, except it didn’t run
the actual rake installer, so there was no rake executable in my
$HOME/usr/bin directory. So I found out where it put it and ran install
there so it put it all in the right places. So then I ran rake on
itself and it ran all it’s tests successfully. Ran the rake rdoc task
and that failed as rdoc was missing ‘rdoc/generators/template/html/css2’

This is was on a stable ruby install of ruby 1.8.1 (2004-04-27)
[i686-linux]. Anyway, so I remembered there had been a rakefile for
rubygems itself so I figured I would go back and play with that. Typed
rake and when it went through all it’s tests it spit out:

  1. Failure:
    test_garbled_gem_throws_format_exception(TestFormat)
    [./test/test_format.rb:29]:
    Gem::FormatException exception expected but was
    Class: YAML::Error
    Message: <“Invalid object explicitly tagged !ruby/Object:
    "rubygems_versionboom \"1.0\" nameboom testing versionboom
    !ruby/objectboomGemboomboomVersion versionboom 1.2.3 dateboom 2004-03-18
    22boom01boom52.859121 -05boom00 platformboom summaryboom This exercise
    the gem testing stuff. require_pathsboom - lib filesboom - lib/foo.rb -
    lib/test - lib/test.rb - lib/test/wow.rb autorequireboom test
    test_suite_fileboom foo requirementsboom - a computer processor"”>
    —Backtrace—
    /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml.rb:179:in object_maker' /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml/rubytypes.rb:36 /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml/rubytypes.rb:34:in call’
    …/lib/rubygems/format.rb:92:in transfer' /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml.rb:39:in load’
    /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml.rb:39:in load' ../lib/rubygems/format.rb:98:in read_spec’
    …/lib/rubygems/format.rb:55:in from_io' ../test/test_format.rb:31:in test_garbled_gem_throws_format_exception’
    …/test/test_format.rb:29:in assert_raise' ../test/test_format.rb:29:in test_garbled_gem_throws_format_exception’

Anyhow, clearly there are a few issues, thought that I should let you
folks know. Does seem like they both do alot, but thought I would let
the respective authors know about the issues inherant.

Looks like it’s coming along though, keep it coming,

Charles Comstock

Also, noticed with gem -l, it might be nice to only display the up to
date versions in this list. There is really no need to display all 6 or
so editions of Redcloth, maybe have a complete listing as an additional
switch? For that matter, while it is definitely cool to see the
description, it might be nice to have that also show up optionally, or
something.

Finally and this applies to a few people, it’s really nice if the
majority of a file --help call displays the majority of the help options
on one page, obviously in some cases that isn’t possible, but it’s
better to stuff some of the info there into a man page or something, or
some form of --help-blah which is mentioned in the --help listing. I
mean obviously this can’t always happen, but it’s nice if for quick
typing if you don’t HAVE to pipe it to less. For instance I noticed on
both rodc --help and gem --help there are blank lines between each
command option. I realize it makes it a little easier to read, but I
guess I’m just used to --help as a quickref which means it’s dense, but
readable, not as the majority of the help system. Ruby and Rake have
the right idea on the length. I generally run a 40 row terminal and I
should be able to view the majority of --help on one screen, unless it’s
something with as many options as say tar.

Anyway, I think these are all excellent tools, I guess it’s just a style
issue that I wanted to point out. Sorry about being so critical, I mean
no offence. I know man pages aren’t that fun to write and I know there
isn’t an equivalent on windows, but maybe application help could be
listed in ri or something? It would be nice to try to keep as many
–help lists for quick reference, not extended documentation.

Charles Comstock

Chad Fowler wrote:

  • Install library “stub” allowing a normal ‘require’ to work (which
    then does the rubygems require and ‘require_gem’

Anyways, comments on first running it, having not installed version
.2. I had also not installed rake before but figured I would use
this chance to check it out. gem -i rake worked fine, except it
didn’t run the actual rake installer, so there was no rake executable
in my $HOME/usr/bin directory. So I found out where it put it and ran
install there so it put it all in the right places. So then I ran
rake on itself and it ran all it’s tests successfully. Ran the rake
rdoc task and that failed as rdoc was missing
‘rdoc/generators/template/html/css2’

Actually, Jim is going to create a new Rake gem that uses the new
RubyGems functionality for creating application gems. Once he creates
that, you should be able to install Rake (including the rake
executable) very easily. The functionality is new as of today, so he
hasn’t yet provided a rake gem that does it.

This is was on a stable ruby install of ruby 1.8.1 (2004-04-27)
[i686-linux]. Anyway, so I remembered there had been a rakefile for
rubygems itself so I figured I would go back and play with that.
Typed rake and when it went through all it’s tests it spit out:

  1. Failure:
    test_garbled_gem_throws_format_exception(TestFormat)
    [./test/test_format.rb:29]:
    Gem::FormatException exception expected but was
    Class: YAML::Error
    Message: <"Invalid object explicitly tagged !ruby/Object:
    "rubygems_versionboom \"1.0\" nameboom testing versionboom
    !ruby/objectboomGemboomboomVersion versionboom 1.2.3 dateboom
    2004-03-18 22boom01boom52.859121 -05boom00 platformboom summaryboom
    This exercise the gem testing stuff. require_pathsboom - lib filesboom
  • lib/foo.rb - lib/test - lib/test.rb - lib/test/wow.rb
    autorequireboom test test_suite_fileboom foo requirementsboom - a
    computer processor"">
    —Backtrace—
    /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml.rb:179:in object_maker' /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml/rubytypes.rb:36 /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml/rubytypes.rb:34:in call’
    …/lib/rubygems/format.rb:92:in transfer' /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml.rb:39:in load’
    /home/cec/s/c/cc1/usr/lib/ruby/1.8/yaml.rb:39:in load' ../lib/rubygems/format.rb:98:in read_spec’
    …/lib/rubygems/format.rb:55:in from_io' ../test/test_format.rb:31:in test_garbled_gem_throws_format_exception’
    …/test/test_format.rb:29:in assert_raise' ../test/test_format.rb:29:in test_garbled_gem_throws_format_exception’

Interesting. Haven’t seen that one before. Will check it out.

Thanks!
Chad

···

On 30/4/2004, at 9:58 PM, Charles Comstock wrote:

Also, noticed with gem -l, it might be nice to only display the up to
date versions in this list. There is really no need to display all 6
or so editions of Redcloth, maybe have a complete listing as an
additional switch? For that matter, while it is definitely cool to
see the description, it might be nice to have that also show up
optionally, or something.

I think as we start seeing more and more gems in the list, this kind of
thing will become obviously necessary. The current format was created
when there were only 8 or 9 gems. :slight_smile: Probably time to rethink a
little, as you say.

Finally and this applies to a few people, it’s really nice if the
majority of a file --help call displays the majority of the help
options on one page, obviously in some cases that isn’t possible, but
it’s better to stuff some of the info there into a man page or
something, or some form of --help-blah which is mentioned in the
–help listing.

I agree. That’s been nagging at me personally for a little while, but
I haven’t brought it up yet. What we have now is (I think) an
improvement over what we used to have. Just need to tame it down a
little.

Anyway, I think these are all excellent tools, I guess it’s just a
style issue that I wanted to point out. Sorry about being so
critical, I mean no offence.

None taken. I appreciate it, personally.

Thanks,
Chad

···

On 30/4/2004, at 10:23 PM, Charles Comstock wrote:

Thanks for the report, Charles. This was a problem with only very
recent CVS versions of Ruby (syck, really). Fixed in CVS.

Chad

···

On 30/4/2004, at 9:58 PM, Charles Comstock wrote:

  1. Failure:
    test_garbled_gem_throws_format_exception(TestFormat)
    [./test/test_format.rb:29]:
    Gem::FormatException exception expected but was
    Class: YAML::Error
    Message: <"Invalid object explicitly tagged !ruby/Object:
    "rubygems_versionboom \"1.0\" nameboom testing versionboom
    !ruby/objectboomGemboomboomVersion versionboom 1.2.3 dateboom
    2004-03-18 22boom01boom52.859121 -05boom00 platformboom summaryboom
    This exercise the gem testing stuff. require_pathsboom - lib filesboom
  • lib/foo.rb - lib/test - lib/test.rb - lib/test/wow.rb
    autorequireboom test test_suite_fileboom foo requirementsboom - a
    computer processor"">

Chad Fowler wrote:

Actually, Jim is going to create a new Rake gem that uses the new
RubyGems functionality for creating application gems. Once he creates
that, you should be able to install Rake (including the rake executable)
very easily. The functionality is new as of today, so he hasn’t yet
provided a rake gem that does it.

Done! You can download the latest Rake GEM file from
http://rubyforge.org/frs/?group_id=50.

When Rich implements the auto-deploy script, this gem should be copied
to the gem server and you will be able to use the remote install option.

The application install now happens automatically. Also, the --gen-rdoc
option will generate some of the RDoc docs, but not everything (working
on that).

···


– Jim Weirich jim@weirichhouse.org http://onestepback.org

“Beware of bugs in the above code; I have only proved it correct,
not tried it.” – Donald Knuth (in a memo to Peter van Emde Boas)

Done! (not the auto-deploy, but a manual copy)

Chad

···

On 30/4/2004, at 11:08 PM, Jim Weirich wrote:

Chad Fowler wrote:

Actually, Jim is going to create a new Rake gem that uses the new
RubyGems functionality for creating application gems. Once he
creates that, you should be able to install Rake (including the rake
executable) very easily. The functionality is new as of today, so he
hasn’t yet provided a rake gem that does it.

Done! You can download the latest Rake GEM file from
http://rubyforge.org/frs/?group_id=50.

When Rich implements the auto-deploy script, this gem should be copied
to the gem server and you will be able to use the remote install
option.