[ANN] RubyGems 0.8.0

C

Chad Fowler

Marking the 3000th download of RubyGems
(http://rubygems.rubyforge.org), we are pleased to announce the release
of RubyGems 0.8.0! The reaction and participation of the community so
far as been astounding...keep those gems coming--this is your show;
we're just trying to provide a little infrastructure!

DOWNLOAD HERE: http://rubyforge.org/frs/?group_id=126
...or....
$ gem install rubygems-update
$ update_rubygems

It's been a while since 0.7.0, but there's been a _ton_ of activity
during this period. This is a VERY big release for us.

There are a lot of changes packed into 0.8.0 (listed in the release
notes pasted at the bottom of this message), but there are a few things
that stand out:

Replacement of library stub functionality
===============================
Instead of cluttering up the site_ruby directory with library/stub
files, we can now load library files out of any installed gem without
having to "require_gem" first. However, you'll have to first "require
'rubygems'" in order for this functionality to work. The easiest way
to do this is to either pass "-rrubygems" on ruby's command line or set
your RUBYOPT environment variable to include "rrubygems". The
rubygems.rb file itself has been made to be VERY lightweight, so it
should not be intrusive to load.

CAVEAT: libraries loaded with the "-r" switch on ruby's command line
will not enjoy this seamless integration.

New Package Format
=================
Graciously contributed by Mauricio Fernandez, RubyGems now uses
tar/gzip as its package format. This shouldn't require any changes on
the part of RubyGems' users and packagers/developers, BUT as new gems
are added to the repository, anyone using RubyGems 0.7.0 will be unable
to install them. If you see an error that looks like this:

ERROR: Error installing gem rubygems-update-0.8.0.gem[.gem]: Error
reading files from gem

...it means you're trying to install a 0.8.0+ gem using RubyGems 0.7.0
or earlier.

Our advice to everyone is to upgrade now.

Pickaxe II
========
As you all know, the second edition of Programming Ruby is due out at
the beginning of this month (pre-order NOW. It's an incredible book).
Dave has made the chapter on RubyGems available as a PDF excerpt.
Preview it here
http://www.pragmaticprogrammer.com/titles/ruby/index.html to get a jump
start on using RubyGems and creating your own gems, and then pick up
the full book when it comes out. Even if you've read through the first
edition multiple times (as many of us have), there is a _lot_ of great
new stuff in the new edition.

What's coming?
============
We're getting awfully close to RubyGems 1.0. We've got some exciting
things cooking, including graphical gem managers for various platforms,
http://rubygems.org, and integration with the one-click ruby
installer(s). Jim Weirich will be presenting RubyGems at this year's
RubyConf (http://rubyconf.org). There are bound to be some teasers...

RubyGems is a party to which everyone is invited. Without YOUR
libraries, the whole thing is meaningless. Help us celebrate RubyGems'
"One Conference Year" birthday Oct. 1 (we started RubyGems at last
year's RubyConf), by continuing to do what you're doing: Release more
gems!

Thanks in advance for your continued feedback, patches, bug reports,
and (most of all) gems.

Chad (for the RubyGems team)

Since so much else has changed, here's a dump of the release notes:

* Remove need for library stubs. Set the RUBYOPT environment variable
to include
"rrubygems", and a normal require will find gem files. Continue to
use 'require_gem gem_name, version' to specify gem versions.
* Deprecated "test_suite_file" gemspec attribute in favor of
"test_files" array.
* Generates rdoc by default on installs.
* Adopted tar/gzip file format, thanks to Mauricio Fernandez.
* "gem rdoc" allows generation of rdoc after gem installation (will
add a "gem test" in 0.9.0)
* Application stubs can now accept an optional parameter of _VERSION_
that will run
an arbitrary version of the application requested.
* Various bug fixes
* Various platform-independency improvements
* "gem spec --all" displays spec info for all installed version of a
given gem. * Dynamic caching of sources
* Support for user-definable sources on the command line (thanks
Assaph Mehr)
* More intelligent support for platform-dependent gems. Use
Platform::CURRENT when
building a gem to set its platform to the one you're building on.
Installation displays a choice of platform-dependent gems, allowing
the user to pick.
* Added "gem unpack" for "unpacking" a gem to the current directory
 
R

Richard Kilmer

I STRONGLY suggest the RUBYOPT thing. And, because rubygems starts with an
'r' we actually have a file named ubygems.rb which enables:

ruby -rubygems

And the RUBYOPT can be: rubygems

So the double 'r' is not necessary.

But like Chad said, this feature lets you just use a standard 'require'
statement on any file in any gem and it does an automatic 'require_gem' for
you transparently. To do this we override the require method. So, if in
your scripts you perform a bogus require you may get a message like:

irb(main):001:0> require 'foo'
LoadError: No such file to load -- foo
from
/usr/local/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require__'
from
/usr/local/lib/ruby/site_ruby/1.8/rubygems/loadpath_manager.rb:5:in
`require'
from (irb):1

You notice the double require and require__ in the call stack. This is what
enables our transparency.

If you need to require a gem of a prior version though, you can still use
require_gem "GemName", "= x.y.z" to get that version. The require hack
always loads the latest version.

Best,

Rich
 
G

Gavin Sinclair

Thanks Chad; this is a groovilicious release. For the collective
readership's benefit, I'd like to provide a few comments.

The library stub thing is dead. If you do this:

require 'rubygems'
require 'active_record' # (A)

then line (A) will cause 'active_record' to be loaded either from
site_ruby or from a gem (any gem). This gives us the transparency we've
been looking for. I believe a 'site_ruby' install will get first
preference, so if you have version requirements [1], then you should do
this:

require 'rubygems'
require_gem 'active_record', '= 0.7.9'

Rich strongly recommends setting the environment variable RUBYOPT to
'rubygems'. That's something each user has to do. I recommend that
developers make it easy for their users by including code like this:

begin
require 'ubygems' # (B)
rescue LoadError
warn "Don't have RubyGems 0.8+" if thats_a_concern?
end

require 'active_record'

This will now work on any user's machine, whether they have RubyGems
installed or not, and whether they've set their RUBYOPT variable or not.

Note: line (B) will work from RubyGems 0.8+ but not RubyGems 0.7-. That's
the idea.

Thanks for all the cool gems people have contributed. Now that this
release is out, I'm going to contribute some myself :)

Some comments on other features:

* If your unit tests are in the 'test' directory of your project,
and are all named 'tc_*.rb', then include this in your gemspec:

spec.test_files = Dir.glob('test/tc_*.rb')

* If you have a test _suite_ file, which loads all the other tests,
you can put this in instead:

spec.test_file = 'test/test_suite.rb'

* If you have _several_ test suite files,

spec.test_files = Dir.glob('test/ts_*.rb')

* The 'spec' and 'unpack' commands only work with _installed_ gems.
I'll extend these commands to other gems for the next release.
'unpack' is useful for taking a look inside a package. For example,

gem unpack rake

will create the directory './rake-0.4.7', or whatever your latest
installed versions is.

Remember to take a look at the "Package Management with RubyGems" chapter
from Pickaxe II, available at

http://www.pragmaticprogrammer.com/titles/ruby/

Remember also that RubyGems isn't the only game in town. Mauricio is
doing a fine job with RPA. The two projects overlap somewhat, but serve
slightly different purposes. Please try to organise your code and project
so that it can be easily packaged into a gem, into the RPA, into a
Debian/RPM/ebuild/... If you have any questions about this, fire away.

Cheers,
Gavin
 
D

Dennis Ranke

Hi!

When trying to install the new rubygems 0.8 on a winxp system (latest
one-click installer), I get the following error:

E:\Dokumente und Einstellungen\dranke\Eigene
Dateien\rubygems-0.8.0>install.rb

As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
....done.
No library stubs found.

Successfully built RubyGem
Name: sources
Version: 0.0.1
File: sources-0.0.1.gem
e:/programme/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:139:in
`generate_
bin_scripts': You don't have write permissions into the e:/bin directory.
(Gem::
FilePermissionError)
from
e:/programme/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:69:i
n `install'
from E:/Dokumente und Einstellungen/dranke/Eigene
Dateien/rubygems-0.8.0
/install.rb:144:in `install_rb'
from E:/Dokumente und Einstellungen/dranke/Eigene
Dateien/rubygems-0.8.0
/install.rb:148

E:\Dokumente und Einstellungen\dranke\Eigene Dateien\rubygems-0.8.0>irb
irb(main):001:0> require 'rbconfig'
=> true
irb(main):002:0> Config::CONFIG['bindir']
=> "e:/programme/ruby/bin"

So far, I have been unable to figure out where the "e:/bin" comes from,
this directory doesn't exist on this computer.

In installer.rb: generate_bin_scripts CONFIG['bindir'] evaluates to the
correct "e:/programme/ruby/bin" while Config::CONFIG['bindir'] evaluates
to "e:/bin". When I change generate_bin_scripts to use CONFIG['bindir']
the install finishes without errors, but the sources gem is not installed
and trying to install it manually produces:

E:\Dokumente und Einstellungen\dranke\Eigene
Dateien\rubygems-0.8.0\packages\sou
rces>gem install sources-0.0.1.gem
Attempting local installation of 'sources-0.0.1.gem'
ERROR: Error installing gem sources-0.0.1.gem[.gem]: uninitialized
constant Gem
::Installer::CONFIG

I hope someone has some kind of idea what causes all of this.
 
A

Austin Ziegler

Marking the 3000th download of RubyGems
(http://rubygems.rubyforge.org ), we are pleased to announce the release
of RubyGems 0.8.0! The reaction and participation of the community so
far as been astounding...keep those gems coming--this is your show;
we're just trying to provide a little infrastructure!

Sadly, I have an error to report on installation:

c:/apps/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:139:in `generate_bin_s
cripts': You don't have write permissions into the c:/bin directory. (Gem::FileP
ermissionError)
from c:/apps/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:69:in `in
stall'
from install.rb:144:in `install_rb'
from install.rb:148

I was using

gem install rubygems-update
update_rubygems

Note where my ruby is: C:/Apps/Ruby -- yet it still tried to install
something into C:/Bin.

-austin
 
C

Chad Fowler

Thanks. We've had several reports of similar things on Windows (and
gotten quite a bit of data from some of them). We'll have a look and
release a patch as soon as we've got a fix.

Chad

On Thu, 16 Sep 2004, Austin Ziegler wrote:

# > Marking the 3000th download of RubyGems
# > (http://rubygems.rubyforge.org ), we are pleased to announce the release
# > of RubyGems 0.8.0! The reaction and participation of the community so
# > far as been astounding...keep those gems coming--this is your show;
# > we're just trying to provide a little infrastructure!
#
# Sadly, I have an error to report on installation:
#
# c:/apps/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:139:in `generate_bin_s
# cripts': You don't have write permissions into the c:/bin directory. (Gem::FileP
# ermissionError)
# from c:/apps/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:69:in `in
# stall'
# from install.rb:144:in `install_rb'
# from install.rb:148
#
# I was using
#
# gem install rubygems-update
# update_rubygems
#
# Note where my ruby is: C:/Apps/Ruby -- yet it still tried to install
# something into C:/Bin.
#
# -austin
# --
# Austin Ziegler * (e-mail address removed)
# * Alternate: (e-mail address removed)
# : as of this email, I have [ 6 ] Gmail invitations
#
 
J

James Britt

Chad said:
Thanks. We've had several reports of similar things on Windows (and
gotten quite a bit of data from some of them). We'll have a look and
release a patch as soon as we've got a fix.

Chad


Here's a another data point, from my win2k box:

Successfully built RubyGem
Name: sources
Version: 0.0.1
File: sources-0.0.1.gem
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:139:in
`generate_bin_scripts': You don't have write permissions into the c:/bin
directory. (
Gem::FilePermissionError)
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:69:in
`install'
from install.rb:144:in `install_rb'
from install.rb:148




My Ruby instance lives n c:\ruby.
ruby 1.8.2 (2004-07-29) [i386-mswin32]

gems uninstall rubygems-update
fails, too.

James
 
C

Chad Fowler

It turns out that our release manager for 0.8.0 (me) made a mistake
and missed a couple of the 0.8.0 tagged files. Not really sure how
that happened, but we have just released RubyGems 0.8.1.

This should fix the problems that Windows users have been seeing with 0.8.0.

You can either download it from
http://rubyforge.org/frs/?group_id=126

or do (assuming you have a working rubygems installation):

$ gem install rubygems-update
$ update_rubygems


Thanks for the help tracking this one down (plus the patches we've
already recieved for 0.8.0)!

Keep those gems coming.

Chad


Chad said:
Thanks. We've had several reports of similar things on Windows (and
gotten quite a bit of data from some of them). We'll have a look and
release a patch as soon as we've got a fix.

Chad


Here's a another data point, from my win2k box:

Successfully built RubyGem
Name: sources
Version: 0.0.1
File: sources-0.0.1.gem
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:139:in
`generate_bin_scripts': You don't have write permissions into the c:/bin
directory. (
Gem::FilePermissionError)
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:69:in
`install'
from install.rb:144:in `install_rb'
from install.rb:148


My Ruby instance lives n c:\ruby.
ruby 1.8.2 (2004-07-29) [i386-mswin32]

gems uninstall rubygems-update
fails, too.

James
 
C

Chad Fowler

(I thought I sent this earlier but it didn't go through...excuse me if
this is a duplicate).


Our release manager for RubyGems 0.8.0 (me, in fact) somehow didn't
grab all of the 0.8.0-tagged files in CVS when 0.8.0 was released, so
we missed some windows-related bug fixes that were done just prior to
release.

This is the cause of the errors that some Windows users have reported.

So, we give you:

RubyGems 0.8.1

Get it here:
http://rubyforge.org/frs/?group_id=126
or
$ gem install rubygems-update
$ update_rubygems

Thanks for all of the feedback and testing so far on this release!
We've already gotten some good patches and a lot of great suggestions!

Keep those gems coming.

Chad

Chad said:
Thanks. We've had several reports of similar things on Windows (and
gotten quite a bit of data from some of them). We'll have a look and
release a patch as soon as we've got a fix.

Chad


Here's a another data point, from my win2k box:

Successfully built RubyGem
Name: sources
Version: 0.0.1
File: sources-0.0.1.gem
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:139:in
`generate_bin_scripts': You don't have write permissions into the c:/bin
directory. (
Gem::FilePermissionError)
from c:/ruby/lib/ruby/site_ruby/1.8/rubygems/installer.rb:69:in
`install'
from install.rb:144:in `install_rb'
from install.rb:148


My Ruby instance lives n c:\ruby.
ruby 1.8.2 (2004-07-29) [i386-mswin32]

gems uninstall rubygems-update
fails, too.

James
 
D

Dennis Ranke

So, we give you:

RubyGems 0.8.1

This installs fine now, however there appears to be some kind of problem
installing dependencies through a proxy server. Trying to remote install
rails I get the following:

E:\Programme\ruby\lib\ruby\gems\1.8>gem install rails -p
http://esperanto:8080
Attempting local installation of 'rails'
Local gem file not found: rails*.gem
Attempting remote installation of 'rails'
Install required dependency actionpack? [Yn] Y
Updating Gem source index for: http://gems.rubyforge.org
ERROR: While executing gem ... (Errno::ECONNRESET)
Eine vorhandene Verbindung wurde vom Remotehost geschlossen. -
connect(2)

This looks a lot like what happens when I try to install actionpack
without specifying the proxy:

E:\Programme\ruby\lib\ruby\gems\1.8>gem install actionpack
Attempting local installation of 'actionpack'
Local gem file not found: actionpack*.gem
Attempting remote installation of 'actionpack'
Updating Gem source index for: http://gems.rubyforge.org
ERROR: While executing gem ... (Errno::ECONNRESET)
Eine vorhandene Verbindung wurde vom Remotehost geschlossen. -
connect(2)

Installing actionpack directly through the proxy does work, though, so
maybe the proxy option is for some reason dropped when trying to download
the dependecies.
 
C

Chad Fowler

So, we give you:

RubyGems 0.8.1

This installs fine now, however there appears to be some kind of problem
installing dependencies through a proxy server. Trying to remote install
rails I get the following:

E:\Programme\ruby\lib\ruby\gems\1.8>gem install rails -p
http://esperanto:8080
Attempting local installation of 'rails'
Local gem file not found: rails*.gem
Attempting remote installation of 'rails'
Install required dependency actionpack? [Yn] Y
Updating Gem source index for: http://gems.rubyforge.org
ERROR: While executing gem ... (Errno::ECONNRESET)
Eine vorhandene Verbindung wurde vom Remotehost geschlossen. -
connect(2)

This looks a lot like what happens when I try to install actionpack
without specifying the proxy:

E:\Programme\ruby\lib\ruby\gems\1.8>gem install actionpack
Attempting local installation of 'actionpack'
Local gem file not found: actionpack*.gem
Attempting remote installation of 'actionpack'
Updating Gem source index for: http://gems.rubyforge.org
ERROR: While executing gem ... (Errno::ECONNRESET)
Eine vorhandene Verbindung wurde vom Remotehost geschlossen. -
connect(2)

Installing actionpack directly through the proxy does work, though, so
maybe the proxy option is for some reason dropped when trying to download
the dependecies.


Thanks, Dennis. This is going to require some pretty hefty tracking.
I tried to reproduce it behind a proxy here at work and couldn't get
it to go wrong. Can you tell us anything about your proxy config?

Thanks,
Chad
 
D

Dennis Ranke

Thanks, Dennis. This is going to require some pretty hefty tracking.
I tried to reproduce it behind a proxy here at work and couldn't get
it to go wrong. Can you tell us anything about your proxy config?

While trying to track down where the proxy option is lost, I just found
the problem: Line 189 of remote_install.rb (in install_dependencies())
reads:

remote_installer = RemoteInstaller.new

but should be something like:

if @http_proxy == false
remote_installer = RemoteInstaller.new:)no_proxy)
elsif @http_proxy == true
remote_installer = RemoteInstaller.new
else
remote_installer = RemoteInstaller.new(@http_proxy)
end

Without the proxy option the setting from the environment variable is
used, so this bug only shows itself when you need to use the proxy to
connect to the internet but don't have the environment variable set.
 
C

Chad Fowler

While trying to track down where the proxy option is lost, I just found
the problem: Line 189 of remote_install.rb (in install_dependencies())
reads:

remote_installer = RemoteInstaller.new

but should be something like:

if @http_proxy == false
remote_installer = RemoteInstaller.new:)no_proxy)
elsif @http_proxy == true
remote_installer = RemoteInstaller.new
else
remote_installer = RemoteInstaller.new(@http_proxy)
end

Aha! :)
Without the proxy option the setting from the environment variable is
used, so this bug only shows itself when you need to use the proxy to
connect to the internet but don't have the environment variable set.

Thanks! I will add this code. I always have the environment variable
set, so I forgot to test with out it (even when you reported the bug).
Thanks a lot for finding this and fixing it.

Chad
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top