Fetching contributors…
Cannot retrieve contributors at this time
5551 lines (3963 sloc) 199 KB
2009-07-21 Eric Hodel <>
* lib/rubygems/package.rb: Remove dangling digest require. Reported
by Jeremy Kemper.
# -*- coding: utf-8 -*-
2009-06-25 Eric Hodel <>
* release_notes/: Merged into History.txt for Hoe.
* lib/rubygems/commands/setup_command.rb: Streamlined install text.
2009-06-23 Eric Hodel <>
* release_notes/rel_1_3_5.rdoc: RubyGems 1.3.5 release notes.
* lib/rubygems/builder.rb: Only print out with verbose.
* lib/rubygems/package_task.rb: Only print out with -t.
2009-06-12 Ryan Davis <>
* Rakefile: Switched to Hoe.
2009-06-10 Phil Hagelberg <>
* lib/rubygems/installer.rb: --user-install is no longer enabled by
* lib/rubygems/source_index.rb: Fix use of prerelease gems.
2009-06-04 Eric Hodel <>
* util/gem_prelude.rb.template: Backports from 1.9.
2009-06-03 Eric Hodel <>
* bin/gem: Support 1.8.6+
* lib/rubygems/digest*: Removed, support dropped for Ruby < 1.8.6
* lib/rubygems/installer.rb: Support env(1) in wrong path, use
/bin/sh if shebang has options. By Nobu, ruby trunk r22853.
* lib/rubygems/config_file.rb: Switch to stdcall for appdata folder.
* lib/rubygems.rb: Use only File::expand_path on 1.9 for home dir.
Don't recklessly create directories. Simplify RbConfig::datadir
2009-05-30 Eric Hodel <>
* lib/rubygems/commands/which_command.rb: Only print out directory
information to a TTY.
* lib/rubygems/rubygems_version.rb: 1.3.4.
* doc/release_notes/rel_1_3_4.rdoc: RubyGems 1.3.4 release notes.
2009-05-28 Eric Hodel <>
* lib/rubygems/commands/setup_command.rb: Fix --format-executable
option name.
* lib/rubygems/requirement.rb: Fix typo in #parse. Bug #26000 by
Mike Gunderloy.
2009-05-21 Eric Hodel <>
* lib/rubygems.rb: Add 'dev' and svn revision for -1 RUBY_PATCHLEVEL
2009-05-20 Eric Hodel <>
* lib/rubygems/defaults.rb: Restore 1.9.1 path behavior.
* lib/rubygems/specification.rb: Fix undefined ivar warning.
* lib/rubygems/indexer.rb: Force loading of builder gem.
* test/gemutilities.rb: Remove gem_prelude code by hand to avoid 1.9
2009-05-19 Luis Lavena <>
* test/test_gem_specification.rb: skip symlinks tests on Windows.
* test/test_gem_commands_install_command.rb: skip chmod test on
2009-05-15 Eric Hodel <>
* lib/rubygems*: Fix 1.9 warnings about circular require.
2009-05-12 Daniel Berger <>
* lib/rubygems/remote_fetcher.rb: Fixed the download method in the
remote_fetcher.rb file so that it handles local installs on MS
Windows when using explicit paths that aren't on the 'C:' drive.
Bug #25882 by Lars Christensen.
* lib/rubygems/commands/update_command.rb: Replaced deprecated
Gem::SourceIndex method 'search' with 'find_name' in the 'execute'
2009-05-07 Eric Hodel <>
* lib/rubygems/commands/query_command.rb: Support prerelease version
listing (--prerelease), list locally installed prereleases.
* lib/rubygems/source_info_cache.rb: Gem::SourceInfoCache is
officially unsupported, maintaining its tests is hard.
* lib/rubygems/source_index.rb: Add #all_gems, fix #remove_spec,
#search to work with it. Prerelease gems can now be used.
2009-05-04 Eric Hodel <>
* lib/rubygems/rubygems_version.rb: 1.3.3.
* doc/release_notes/rel_1_3_3.rdoc: RubyGems 1.3.3 release notes.
* lib/rubygems/specification.rb: Default has_rdoc to true, ignore
its value.
* lib/rubygems/doc_manager.rb: Always generate RDoc regardless of
* lib/rubygems.rb: Raise Gem::LoadError if Kernel#gem fails due to
previously-loaded gem. Bug reported by Alf Mikula.
2009-05-02 Eric Hodel <>
* lib/rubygems/commands/server_command.rb: Allow port names with
* lib/rubygems/requirement.rb: Match prerelease versions and ~>
correctly. Patch #25759 by Yossef Mendelssohn.
2009-05-01 Eric Hodel <>
* lib/rubygems/specification.rb: Check bindir for executables, not
root. Bug reported by David Chelimsky. Remove, no way
to override it before RubyGems loads. Bug #25564 by Emanuele
Vicentini. Raise Gem::Exception for #installation_path when not
installed. Bug #25741 by Daniel Berger. Don't error in #validate
when homepage is nil. Bug #25677 by Mike Burrows.
* lib/rubygems/commands/cleanup_command.rb: Clean up --user-install
gems. Bug #25516 by Brett Eisenberg.
* lib/rubygems/uninstaller.rb: Uninstall executables from the correct
directory. Bug #25555 by Brett Eisenberg.
* lib/rubygems/server.rb: Add search that jumps to RDoc. Patch
#22959 by Vladimir Dobriakov.
2009-05-01 James Tucker <>
* lib/rubygems.rb: Gem.bin_path now escapes paths with spaces.
2009-04-30 Daniel Berger <>
* lib/rubygems/commands/install_command.rb: Replaced deprecated
Gem::SourceIndex method 'search' with 'find_name' when using
the -t option. Fixes bug # 25632 by Daniel Berger.
2009-04-30 James Tucker <>
* lib/rubygems/ext/rake_builder.rb: Use explicit ruby command loading
rubygems to invoke rake.
2009-04-24 Eric Hodel <>
* lib/rubygems/commands/specification_command.rb: Added requesting
single fields from a spec.
2009-04-23 James Tucker <>
* lib/rubygems/ext/configure_builder.rb: Support Gem::Command.build_args.
2009-04-15 Eric Hodel <>
* lib/rubygems/rubygems_version.rb: 1.3.2.
2009-04-14 Eric Hodel <>
* lib/rubygems/specification.rb: Complain when summary and
description are identical.
2009-04-08 Eric Hodel <>
* lib/rubygems/specification.rb: Strip directories, complain for
non-files in #validate.
2009-04-07 Eric Hodel <>
* lib/rubygems/specification.rb: Implement #initialize_copy.
* lib/rubygems/commands/contents_command.rb: Add --no-prefix and
2009-04-06 Eric Hodel <>
* lib/rubygems/defaults.rb: Don't allow gem to overwrite ruby on
install. Fixes bug #24958 by Michael Soulier.
* doc/release_notes/rel_1_3_2.rdoc: Preliminary 1.3.2 release notes.
* Rakefile: Trim off some stale code, switch to Manifest.txt, one
step closer to Hoe!
2009-04-06 Daniel Berger <>
* test/test_gem_ext_configure_builder.rb: Better handling for MS
* test/gemutilities.rb: Added the make_command and vc_windows? helper
2009-04-03 Eric Hodel <>
* lib/: RDoc improvements.
2009-04-02 Eric Hodel <>
* lib/rubygems/commands/setup_command.rb: Fix --destdir. Patch
#24970 by Richard Brown.
2009-04-02 Phil Hagelberg <>
* lib/rubygems/version.rb: Documentation of prerelease
versions. See for details.
2009-03-31 Eric Hodel <>
* lib/rubygems/spec_fetcher.rb: If the cached specs file won't load,
refetch. Bug #24961 by Dylan Stamat.
* lib/rubygems/defaults.rb: Add a sanity check to
Gem.default_exec_format. Workaround for bug #24958 by Michael
* lib/rubygems/commands/setup_command.rb: Fix confusion with option
names. Patch #24971 by Richard Brown.
* lib/rubygems/specification.rb: Make #validate complain about
* lib/gauntlet_rubygems.rb: For verification of the validator.
2009-03-27 Eric Hodel <>
* lib/rubygems.rb: RubyGems now loads plugins from rubygems_plugin.rb
in installed gems. This can be used to add commands (See
Gem::CommandManager) or add install/uninstall hooks (See
Gem::Installer and Gem::Uninstaller).
* setup.rb: Ensure we're in a RubyGems dir when installing.
2009-03-26 Eric Hodel <>
* lib/rubygems/package_task.rb: Import from Rake's
* Rakefile: Switched to RDoc::Task from RDoc 2.4.2.
* lib/rubygems.rb: Gem.find_files now returns paths in $LOAD_PATH.
* lib/rubygems/commands/sources_command.rb: Allow sources to be added
behind proxies. Bug #24785 by Elia Schito.
2009-03-25 Eric Hodel <>
* lib/rubygems/commands/install_command.rb: Fix typo. Patch #24446
by Luis Parravicini.
* lib/rubygems/version.rb: Handle non-String versions by calling
#to_s. Patch #24392 by Stephen Bannasch.
2009-03-22 Daniel Berger <>
* lib/rubygems/remote_fetcher.rb: Always escape URI's to deal with spaces
and such, regardless of platform.
* lib/rubygesm/validator.rb: Use the test-unit gem if installed.
Part of the fix for RF #24261 by Daniel Berger
* lib/rubygems/commands/install_command.rb: Explictly require
rubygems/uninstaller.rb if the user wants to bail because of failed
Part of the fix for RF #24261 by Daniel Berger
2009-03-17 Eric Hodel <>
* lib/rubygems/commands/query_command.rb: Make `gem unpack` work with
more than one gem name, fix warning about installation location.
2009-03-16 James Tucker <>
* lib/rubygems.rb: Deprecate ConfigMap[:RUBY_INSTALL_NAME]
* lib/rubygems/defaults.rb: Gem.default_exec_format to use
Fixes Bug #24457
* util/gem_prelude.rb.template: Fix potential bug in
Gem.default_exec_format when ConfigMap[:BASERUBY] is not 'ruby'.
2009-03-14 Luis Lavena <>
* lib/rubygems/installer.rb: Cleanup quotes on Windows stub scripts.
Fixes Bug #24039.
* lib/rubygems/commands/setup_command.rb: ditto.
2008-03-13 Eric Hodel <>
* lib/rubygems/commands/uninstall_command.rb: Add --user-install to
allow uninstallation from ~/.gem. Bug #23760 by Roger Pack.
* lib/rubygems/uninstaller.rb: Automatically uninstall from
* lib/rubygems/commands/update_command.rb: Rescue InstallError
and continue. Bug #19268 by Gabriel Wilkins.
* lib/rubygems/doc_manager.rb: Remove some options from the args list
that RDoc no longer supports.
2008-03-12 Eric Hodel <>
* lib/rubygems/specification.rb: #description no longer removes
* lib/rubygems/indexer.rb: Wrap description in a pre and force-wrap
lines to 78 characters for prettier display.
* lib/rubygems/commands/setup_command.rb: Clarify RubyGems RDoc
installation location. Bug #22656 by Gian Marco Gherardi.
2008-03-09 Eric Hodel <>
* lib/rubygems/commands/query_command.rb: Add platforms to gem list
* lib/rubygems/commands/setup_command.rb: Allow setup to run from
read-only location. Patch #21862 by Luis Herrera.
* lib/rubygems/package/tar_input.rb: Use real File methods. Bug
#23966 by Mike Furr.
* lib/rubygems.rb: Don't add PATCHLEVEL if it's -1. Patch #24048 by
Jeremy Kemper.
* lib/rubygems/package/tar_input.rb: Choose security policy
correctly. Bug #24001 by Mike Furr.
* lib/rubygems/remote_fetcher.rb: Handle local paths with spaces.
Bug #24169 by Ryan Davis.
* lib/rubygems/specification.rb: Removed Gem::Specification::list,
causes leaks. Bug #23668 by Steve Purcell.
2008-03-07 Eric Hodel <>
* lib/rubygems/installer.rb: Use Gem::bin_path in executable stubs to
work around Kernel#load bug.
* lib/rubygems/commands/install_command.rb: Copy user_install down to
Gem::DependencyInstaller. Patch #23573 by Alf Mikula.
* lib/rubygems/command.rb: Add info on gem server directly to `gem
help`. Patch #22271 by Hugh Sasse.
2008-03-06 Eric Hodel <>
* lib/rubygems/specification.rb: Don't allow FIXME in specs.
* lib/rubygems/commands/spec_command.rb: Add --ruby and --marshal
* lib/rubygems.rb: Add Gem::bin_path. Patch #24114 by James Tucker.
2008-03-04 Eric Hodel <>
* setup.rb: Moved guts to lib/rubygems/commands/setup_command.rb.
* lib/rubygems/indexer.rb: Added RSS feed generation on full index
2008-03-04 Phil Hagelberg <>
* lib/*: Prerelease gems go into their own index now and are excluded
from other indices. InstallCommand only gets prereleases if explicitly
requested. Thanks to Alex Vollmer.
2008-03-04 Eric Hodel <>
* lib/*: Add lots of pretty pretty_print stuff!
2008-02-25 Ryan Davis <>
* lib/rubygems/commands/check_command.rb: Fix various usability
2009-02-10 Daniel Berger <>
* lib/rubygems/specification: Refactored and fixed the installation_path
method. It was overwrought and it now no longer uses File::SEPARATOR
[RubyForge: bug #23879 by Daniel Berger]
2009-02-10 Daniel Berger <>
* lib/rubygems/validator.rb: The Gem::Validator#verify_gem_file method
now explicitly rescues Errno::EINVAL as well as Errno::ENOENT because
MS Windows raises a different SystemCallError for empty paths.
2009-01-21 Daniel Berger <>
* lib/rubygems/remote_fetcher.rb: Split out nil and file handling in
the download method. Modified file URI handling to work properly.
[RubyForge: bug #16495 by Paul Sadauskas]
2009-01-19 Daniel Berger <>
* lib/rubygems/remote_fetcher.rb: Added uri scheme validation back
into the open_uri_or_path method, though it now accepts 'https' and
'file' as well.
* test/test_gem_remote_fetcher.rb: Updated the test_fetch_size_bad_uri
to reflect the updated error message.
2009-01-15 Daniel Berger <>
* lib/rubygems/remote_fetcher.rb: Removed the open_file_uri_path method
since the URI#path method already does the same thing, and changed
the file_uri? method so that it explicitly calls .to_s.
* lib/rubygems/local_remote_options.rb: Allow file urls.
2009-01-15 Daniel Berger <>
* lib/rubygems/commands/generate_index_command.rb: Fixed a typo in
the description.
* test/test_gem_doc_manager.rb: The test_uninstall_doc_unwritable
test is now skipped on Windows.
* test/test_gem_install_update_options.rb: The
test_user_install_disabled_read_only test is now skipped on Windows.
* test/test_gem_installer.rb: The test_generate_bin_symlink_no_perms
and test_generate_bin_script_no_perms tests are now skipped on Windows.
2009-01-14 Daniel Berger <>
* lib/rubygems/specification.rb: Added support for a license attribute.
[RubyForge: feature #11041 (partial) by Kevin Williams]
* lib/rubygems/commands/query_command.rb: Gem detail information now
includes license information.
* test/test_gem_specification.rb: Added tests for the license attribute.
2009-01-05 Chad Woolley <>
* move processing of build args out of gem binary so they are handled correctly via API usage.
* lib/rubygems/command.rb: Add class accessor for build_args.
* lib/rubygems/ext/rake_builder.rb: Use Gem::Command.build_args instead of ARGV.
* lib/rubygems/ext/ext_conf_builder.rb: Use Gem::Command.build_args instead of ARGV.
* lib/rubygems/gem_runner.rb: Move build arg processing from gem binary.
* lib/rubygems/commands/contents_command.rb: Use nonzero return code (required to make tests pass).
* bin/gem: Move build arg processing to gem_runner.rb.
[RubyForge: bug #23210]
* lib/rubygems/config_file.rb: Fix --config-file option with no
equals and subsequent options to properly assign config file.
Previously config file was overwritten by subsequent option.
Fixes bug #16688.
2009-1-4 Daniel Berger <>
* lib/rubygems/installer.rb: Remove existing path if it already
exists before installing.
[RubyForge: patch #22837 by Eric Wong]
* lib/rubygems.rb: Minor modification to the location_of_caller
method - deal with possible characters after line number
2009-1-3 Daniel Berger <>
* lib/rubygems.rb: Better activation error message.
[RubyForge: patch #23082 by Tim Carey-Smith]
2009-1-2 Daniel Berger <>
* lib/rubygems/ext/rake_builder.rb: Quote path if it contains spaces
[RubyForge: patch #23003 by Charlie Savage]
* lib/rubygems/local_remote_options.rb: Ignore duplicate sources
[RubyForge: bug #22277 by Elliot Temple]
* lib/rubygems/remote_fetcher.rb: Automatically normalize the URI
[RubyForge: bug #22151 by Alex Legler]
* lib/rubygems/specification.rb: Ensure that specification_version is
a Fixnum [RubyForge: bug #22598 by Tsutomu Kuroda]
* lib/rubygems/specification.rb: Bumped the CURRENT_SPECIFICATION_VERSION
and added an entry to the SPECIFICATION_VERSION_HISTORY
2009-1-1 Daniel Berger <>
* test/test_gem_dependency.rb: Removed a duplicate "def dep" that
was causing a warning.
* lib/rubygems/platform.rb: Added an empty? method in order to
better handle gem indexing when dealing with gems created
prior to 0.9.5. [Rubyforge: bug #22603 by Johnathan Conley]
* lib/rubygems.rb: Added an explicit 'require "etc"'.
[RubyForge: bug #22313 by Matthew Boedicker]
2008-12-31 Daniel Berger <>
* lib/rubygems/local_remote_options: Allow 'https' as a valid scheme
in addition to 'http' [RubyForge: patch #22485 by Duarte Henriques]
* setup.rb: Deal with extraneous quotation mark when autogenerating
.bat file on MS Windows [RubyForge: bug #22712 Takayuki Ishikawa]
* lib/rubygems/commands/unpack_command.rb: Fixed the --target option
[RubyForge: patch #22532 by Bryan Ash]
2008-12-30 Daniel Berger <>
* lib/rubygems/builder.rb: Don't allow .gem file to be added back
onto itself [RubyForge: bug #19136, patch #23346 by Daniel Berger]
* lib/rubygems/defaults.rb: The default_path now only returns the
default_dir if the Gem.user_home doesn't exist
[RubyForge: bug #23037 by Pierre PLR]
* lib/rubygems.rb: Handle the possibility that Etc.getpwuid might
return nil on platforms other than Windows
[RubyForge: bug #22764 by Dudley Flanders]
2008-12-16 Eric Hodel <>
* lib/rubygems/doc_manager.rb: Set title for generated documentation.
* lib/rubygems/dependency.rb: Make #=~ work with Gem::Specification.
2008-12-15 Eric Hodel <>
* lib/rubygems/installer.rb: Fix documentation for
Gem::Installer#write_spec. Issue by okkez.
2008-12-12 Eric Hodel <>
* lib/rubygems/local_remote_options.rb: Merge documentation fix by
okkez [ruby-dev:37271].
* lib/rubygems/source_info_cache_entry.rb: Merge documentation fix
from [ruby-dev:37255].
2008-12-08 Eric Hodel <>
* lib/rubygems.rb: Add Gem::promote_load_path
2008-12-01 Ryan Davis <>
* lib/rubygems/remote_fetcher.rb: made threadsafe.
2008-11-25 Eric Hodel <>
* lib/rubygems/commands/install_command.rb: Don't do any post-install
stuff if no gems were installed. Issue by Daniel Berger.
2008-11-20 Eric Hodel <>
* lib/rubygems/source_index.rb: Read the file outside the exception
block so we raise a sane error.
* lib/rubygems/indexer.rb: Allow the modern index to be updated
incrementally. Allow the legacy and modern indicies to be updated
2008-11-17 Eric Hodel <>
* lib/rubygems/indexer.rb: Added ability to only generate modern or
legacy indicies.
2008-11-14 Eric Hodel <>
* lib/rubygems/timer.rb: Deprecate and move methods to Gem and
2008-11-11 Phil Hagelberg <>
* lib/rubygems/, test/: Make Version understand prerelease
versions using letters. (eg. '1.2.1.b') Thanks to Josh Susser and
Alex Vollmer.
2008-11-03 Eric Hodel <>
* lib/rubygems/specification.rb: Gem name must be a String.
2008-10-31 Eric Hodel <>
* lib/rubygems/defaults.rb: Update to support 1.9 libdir.
* util/gem_prelude.rb: Move to .template, automatically fold in
2008-10-29 Eric Hodel <>
* lib/rubygems.rb: Handle nonexistent home directory. Bug #22229 by
Alexey Verkhovsky.
2008-10-25 Eric Hodel <>
* lib/rubygems.rb, lib/rubygems/custom_require.rb: Make kernel
methods private. Patch #20801 by James M. Lawrence. Expose
our kernel extensions to RDoc. Make Gem::location_of_caller behave on
Windows. Patch by Daniel Berger.
* doc/release_notes/rel_1_3_1.rdoc: Final release notes for 1.3.1.
* lib/rubygems/rubygems_version.rb: 1.3.1.
2008-10-10 Eric Hodel <>
* lib/rubygems/commands/unpack_command.rb: Silence PATH warning.
2008-10-09 Eric Hodel <>
* lib/rubygems.rb: Fix requires for inflate, deflate, etc.
* test/*: Convert to minitest/unit.
* lib/rubygems/validator.rb: Fix for MiniTest instead of test/unit
classic in 1.9.
2008-10-03 Phil Hagelberg <>
* lib/rubygems.rb: Make Gem.dir respect :gemhome value from config.
* lib/rubygems/config_file.rb: Expose :gemhome value.
2008-09-26 Luis Lavena <>
* lib/rubygems.rb: Disregard ownership of ~ under Windows while
creating ~/.gem. Fixes issues related to no uid support under
2008-09-24 Eric Hodel <>
* doc/release_notes/rel_1_3_0.rdoc: Final release notes for 1.3.0.
* lib/rubygems/rubygems_version.rb: 1.3.0.
* lib/rubygems/builder.rb: Examine process status correctly. Patch
by Nobu.
* test/test_gem_ext_rake_builder.rb: Override Gem.ruby and
ENV['rake'] for 1.9 integration. Patch by Nobu.
2008-09-16 Phil Hagelberg <>
* lib/rubygems.rb: Use the path set in the config file if
* lib/rubygems/config_file.rb: Expose the path.
2008-09-16 Eric Hodel <>
* lib/rubygems.rb: Only create ~/.gem by user owning ~. Bug #21561
by Neil Wilson.
2008-09-15 Eric Hodel <>
* lib/rubygems/source_index.rb: Autoload SpecFetcher to improve load
time. Patch #21577 by Simon Chiang.
* lib/rubygems/commands/lock_command.rb: Modernize. Fix --strict.
Patch #21814 by Sven Engelhardt.
* lib/rubygems/platform.rb: Fix for solaris platform. Patch #21911
by Bob Remeika.
2008-09-10 Eric Hodel <>
* lib/rubygems/commands/install_command.rb: Describe _version_ in `gem
help install`.
* lib/rubygems/commands/environment_command.rb: Describe environment
variables and gemrc in `gem help env`.
* lib/rubygems.rb: Warn when executing Gem::manage_gems.
* lib/rubygems/doc_manager.rb: Have RubyGems update the ri cache.
* lib/rubygems/source_index.rb: Ensure specs are read as UTF-8.
* lib/rubygems/specification.rb: Add magic comment to .gemspec files
so they are read in as UTF-8.
2008-08-22 Luis Lavena <>
* lib/rubygems.rb: Corrected usage of HOMEDRIVE and HOMEPATH on Windows.
Escape Gem.ruby if spaces in the path are present. Solves bug related to
extensions compile process.
* test/test_gem.rb: Added test to verify both conditions.
2008-08-17 Eric Hodel <>
* doc/release_notes/rel_1_3_0.rdoc: Initial release notes for 1.3.0.
* util/CL2notes: Release note creation helper script.
2008-08-16 Eric Hodel <>
* lib/rubygems/local_remote_options.rb: Added #both? to complement
#local? and #remote?.
* lib/rubygems/commands/query_command.rb: Print out LOCAL/REMOTE with
--both, even without a TTY.
* lib/rubygems.rb: Add Gem.find_files, allows a gem to discover
features provided by other gems.
2008-08-14 Wilson Bilkovich <>
* lib/rubygems/source_index.rb: Deprecate options to 'search' other than
Gem::Dependency instances and issue warning until November 2008.
* lib/rubygems/platform.rb: Remove deprecated constant warnings
and really deprecate them.
* Rakefile: If the SETUP_OPTIONS environment variable is set, pass its
contents as arguments to setup.rb
* test/test_gem_commands_uninstall_command.rb: Added
2008-08-13 Wilson Bilkovich <>
* lib/rubygems/uninstaller.rb: Fix binary script uninstallation.
Bug #21234 by Neil Wilson.
* test/test_gem_commands_uninstall_command.rb: Added
2008-08-12 Eric Hodel <>
* lib/rubygems/installer.rb: Try to create directory before diverting
to ~/.gems.
* lib/rubygems/uninstaller.rb: Fix uninstallation with -i. Bug
#20812 by John Clayton. Have #remove_all call #uninstall_gem so hooks
get called. Bug #21242 by Neil Wilson.
* lib/rubygems/commands/update_command.rb: Fix updating RubyGems when
no previous rubygems-update is installed. Bug #20775 by Hemant Kumar.
2008-08-11 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Fix HTTPS support. Patch #21072 by
Alex Arnell. Fix Not Modified handling. Bug #21310 by Gordon
2008-07-11 Luis Lavena <>
* setup.rb: Properly build --destdir folder structure using Pathname.
* test/mockgemui.rb: Fix warnings about instance variables in a module.
2008-07-02 Phil Hagelberg <>
* lib/rubygems/defaults.rb: Add Gem.user_dir to use paths like
~/.gem/ruby/1.8/gems and the like instead of just ~/.gem. Update
remote fetcher and installer to use it.
2008-07-01 Eric Hodel <>
* lib/rubygems/installer.rb: Add #gem_home, #bin_dir for hooks. Use
DependencyInstaller's source_index so reinstallation via -i does not
* lib/rubygems/uninstaller.rb: Add #gem_home, #bin_dir for hooks.
* lib/rubygems/commands/query_command.rb: Don't print LOCAL/REMOTE
gems if stdout is not a TTY.
* lib/rubygems/commands/query_command.rb: Use the regexp we already
have for `gem list --installed`. Bug #20876 by Nick Hoffman.
* lib/rubygems/commands/which_command.rb: Clarify what `gem which` is
2008-06-30 Eric Hodel <>
* test/test_ext_configure_builder.rb: Locale-free patch by Yusuke
Endoh [ruby-core:17444].
* lib/rubygems.rb: Add pre/post (un)install hooks.
* lib/rubygems/installer.rb: Call pre/post install hooks as
* lib/rubygems/uninstaller.rb: Call pre/post uninstall hooks as
appropriate. Minor refactoring of #uninstall.
* lib/rubygems/package/tar_reader.rb: Some OSs raise EINVAL on seek.
Based on patch in bug #20791 by Neil Wilson.
* lib/rubygems/specification.rb: Correctly check for support of
development dependencies for #to_ruby. Bug #20778 by Evan Weaver.
* lib/rubygems/spec_fetcher.rb: Correctly load all cache file even if
latest has been loaded. Bug #20776 by Uwe Kubosch.
2008-06-25 Eric Hodel <>
* lib/rubygems/config_file.rb: Add Gem::ConfigFile constants for
packagers and implementors to override defaults.
* test/*: Fixes to run tests when under test/rubygems/. Patch by
Yusuke ENDOH [ruby-core:17353].
2008-06-24 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Cleanup to support
if-modified-since requests. pair: Ryan Davis
* lib/rubygems/indexer: Force platform to Gem::Platform::RUBY when
nil or blank. Fixes various uninstallable gems.
2008-06-24 Phil Hagelberg <>
* lib/rubygems/installer.rb: Fall back on ~/.gem if GEM_HOME is
not writable.
* lib/rubygems/install_update_options.rb: Allow --user-install or
--no-user-install command-line switch to explicitly force whether
or not ~/.gem should be used.
* lib/rubygems/remote_fetcher.rb: Use ~/.gem/cache if cache dir is
not writable.
* test/gemutilities.rb: Use MockGemUi for all tests.
2008-06-21 Eric Hodel <>
* lib/rubygems/specification.rb: Load specifications from the future.
Roll back specification version change.
* lib/rubygems/remote_fetcher.rb: Reset connection when an HTTP
server misbehaves.
* setup.rb: Fix --destdir for windows.
* doc/release_notes/rel_1_2_0.rdoc: Bugs in RubyGems were
unintentionally added, order bug fixes by importance.
* lib/rubygems/rubygems_version.rb: 1.2.0.
2008-06-20 Eric Hodel <>
* lib/rubygems/uninstaller.rb: Improve output when a gem to uninstall
isn't found. Bug #20746 reported by Chad Wooley.
* setup.rb: Fix rdoc installation with --destdir. Patch #20739 by
Matthew Kent.
* lib/rubygems/commands/install_command.rb: Don't reset GEM_PATH when
installing. Fixes Bug #20746 by Chad Wooley.
2008-06-20 Luis Lavena <>
* setup.rb: Only prepend install_destdir when especified. Fixes
installation issues related to Windows paths (/C:/...)
2008-06-19 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Ensure that the entire
dependency chain is installed. Fixes bug reported by Chad Woolley.
2008-06-18 Eric Hodel <>
* lib/rubygems/commands/dependency_command.rb: Restore matching
everything when no name is specified, regexp matching. Fixes bug
#20716, bug #20717 by Chad Woolley.
2008-06-18 Chad Woolley <>
* lib/rubygems/config_file.rb: Fix --config-file option with no
equals and subsequent options to properly assign config file.
Previously config file was overwritten by subsequent option.
Fixes bug #16688.
2008-06-17 Eric Hodel <>
* lib/rubygems/version.rb: Gem::Version #hash and #eql? now operate
on the version string, terms of the version string, so "1" and "1.0"
no longer correspond to the same slot. Fixes indexer bug reported by
Chad Woolley.
* setup.rb: Fix --format-executable. Patch #20698 by Richard Brown.
* util/gem_prelude.rb: Prevent infinite recursion, check for Gem now.
Patch from ruby trunk by nobu.
* lib/*: Spelling cleanup. Patch from trunk by Evan Farrar.
* test/*: Fixes for win32 test failures reported by Luis Lavena.
* util/gem_prelude.rb: Only remove methods added by gem_prelude.rb.
2008-06-16 Eric Hodel <>
* lib/rubygems/indexer.rb: Fix quick_index generation.
* lib/rubygems/specification.rb: Correctly guard new spec features
for older RubyGems.
* lib/rubygems/config_file.rb: Add system-wide config file
(/etc/gemrc). Patch #14723 by Phil Hagelberg. Add windows code to
use appropriate directory. Code by Daniel Berger.
* doc/release_notes/rel_1_2_0.rdoc: Draft of 1.2.0 release notes.
2008-06-15 Eric Hodel <>
* lib/rubygems/server.rb: Store off if we are returning Marshal
format before running =~ again. Fixes bug reported by Chad Woolley.
* lib/rubygems/commands/stale_command.rb: `gem stale` lists gems by
last access time. Patch #20593 by Aaron Patterson.
* lib/rubygems/setup.rb: Add --vendor and --destdir to setup.rb for
packagers. Patch #20610 by Richard Brown. Don't look for stub
files to remove any more.
* lib/rubygems/specification.rb: Bump specification version and be
backwards compatible with type 2 specs.
* lib/rubygems/commands/query_command.rb: Add installed location to
details for installed gems.
2008-06-09 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Only install all dependencies
when install_dir option is set. Don't include satisfied dependencies
when gathering dependencies.
* lib/rubygems/commands/query_command.rb: Display authors, rubyforge
and homepage urls with details.
* lib/rubygems/commands/environment_command.rb: Add executable
directory (from Rubinius).
* lib/rubygems/commands/install_command.rb: Don't set install_dir by
* lib/rubygems/commands/update_command.rb: Don't set install_dir by
default. Use #find_missing for efficiency.
2008-06-07 Eric Hodel <>
* lib/rubygems/server.rb: Fully mirror Gem::Indexer indexes, set
correct content-type headers, always refresh the source index.
* lib/rubygems/source_index.rb: Add spec_dirs so that #refresh! will
always reload from the same locations. #refresh! on manually-built
SourceIndex now raises. Fixes #20509 by Chad Woolley.
2008-06-06 Eric Hodel <>
* lib/rubygems/installer.rb: Remove previous bin_script_path in case
it is a symlink.
* lib/rubygems/commands/pristine_command.rb: Force reinstallation of
the gem using the installer. Fixes bug #20387 by Erik Persson.
* lib/rubygems/doc_manager.rb: Ensure args to RDoc are all strings.
* lib/rubygems/source_index.rb: Use find_matching to discover updated
specs instead of fetch.
* lib/rubygems/commands/query_command.rb: Platform, not name in spec
2008-06-05 Eric Hodel <>
* lib/rubygems/local_remote_options.rb: Ensure remote repository URLs
reference directories. Fixes bug #20134 by Neil Wilson.
* lib/rubygems/source_index.rb: Gracefully handle ^C or explicit exit
while loading .gemspec files from disk. Fixes bug #20523 by Joel
* lib/rubygems/specification.rb: Use File#expand_path in
installation_path. Fixes bug #19317 by Hemant Kumar.
* lib/rubygems/spec_fetcher.rb: Fix legacy test against URI.
* lib/rubygems/remote_fetcher.rb: Always raise FetchError from
RemoteFetcher. Fix FetchErrors without URIs. Refactor Net::HTTP
request code to use persistent connections for HEAD requests. Feature
Request #7973 by Christian Schachtzabel.
* lib/rubygems.rb: Don't load custom_require until after the OS and
implementation have had a chance to set paths.
2008-06-04 Eric Hodel <>
* lib/rubygems/commands/source_index.rb: Only fetch specs we need in
* lib/rubygems.rb: Fix typo in ::activate exception.
* lib/rubygems/dependency.rb: For #to_s, display dependency type when
* lib/rubygems/dependency_installer.rb: Reset #installed_gems for
every #install. Fixes bug #19444 by Glenn Rempe.
* lib/rubygems/installer.rb: Don't re-read the disk to check for new
gems, add them by hand on install.
2008-06-03 Eric Hodel <>
* lib/rubygems.rb: Add ::gzip, ::gunzip, ::deflate and ::inflate.
* lib/rubygems/server.rb: Add specs and latest_specs indicies.
* setup.rb: Don't require rdoc until needed. Patch #20414 by Brian
* lib/uninstaller.rb: Correctly uninstall gems installed with a
legacy platform. Patch #19877 by Luis Lavena.
* lib/rubygems/commands/update_command.rb: Only fetch remote specs
when we know what we're looking for.
2008-06-02 Eric Hodel <>
* lib/rubygems/specification.rb: Remove double slash in
#installation_path. Fixes bug #19896 by Heiko Seebach.
* lib/rubygems/remote_fetcher.rb: Require StringIO. Fixes bug #19866
by Caleb Land.
* lib/rubygems.rb: Require rubygems/defaults/#{RBX_ENGINE}.rb and
rubygem/defaults/operating_system.rb if they exist. (OS require comes
first and may be overridden by operating system.)
2008-06-01 Eric Hodel <>
* lib/rubygems/indexer.rb: Ensure identical names, versions and
platforms are identical for a smaller index.
* lib/rubygems/spec_fetcher.rb: Only write to cache when we own it.
* lib/rubygems.rb: Honor default_path if GEM_PATH environment
variable is not set. Patch #19502 by Donavan Pantke.
* lib/rubygems/installer.rb: Set file mode indicated by tar file.
Patch #19737 by Jason Roelofs.
2008-06-01 John Barnette <>
* lib/rubygems.rb: Add Gem.available?(gem, *specs) for easy availability
checks at runtime.
2008-05-31 Eric Hodel <>
* lib/rubygems/commands/dependency_command.rb: Delay fetching specs
until needed. Reverse dependencies can no longer be calculated for
remote sources. Add backwards compatibility.
* lib/rubygems/commands/fetch_command.rb: Add backwards
2008-05-30 Eric Hodel <>
* lib/rubygems/local_remote_options.rb: --sources option should not
add URIs to Gem.sources.
* lib/rubygems/spec_fetcher.rb: Add #warn_legacy to help handling
legacy sources.
* luby/rubygems/commands/query_command.rb: Add backwards
compatibility with legacy sources.
2008-05-28 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Add #uri to
* lib/rubygems/user_interaction.rb: Improve RDoc slightly.
* lib/rubygems/spec_fetcher.rb: Introduce backwards compatibility for
legacy (pre 1.2) repositories
* lib/rubygems/commands/sources_command.rb: Backwards compatibility
and restoration of --update.
* lib/rubygems/specification.rb: Ensure nil-typed dependencies become
runtime dependencies.
2008-05-27 Eric Hodel <>
* lib/rubygems/spec_fetcher.rb: Switch #fetch, #find_matching to be
compatible with Gem::SourceInfoCache#search_with_source. Add caching
for .gemspec files.
* lib/rubygems/dependency_installer.rb: Switch to SpecFetcher.
* lib/rubygems/source_index.rb: Switch #outdated to use SpecFetcher.
* lib/rubygems/commands/dependency_command.rb: Switch to SpecFetcher.
* lib/rubygems/commands/outdated_command.rb: Switch to SpecFetcher.
* lib/rubygems/commands/query_command.rb: Switch to SpecFetcher.
* lib/rubygems/commands/sources_command.rb: Switch to SpecFetcher.
* lib/rubygems/commands/update_command.rb: Switch to SpecFetcher.
* lib/rubygems/version.rb: Handle comparisons with non-Gem::Version
2008-05-13 Eric Hodel <>
* lib/rubygems/spec_fetcher.rb: Add caching of specs, latest_specs
* test/gemutilities.rb: Ensure Gem.user_home doesn't point to ~.
2008-05-09 Eric Hodel <>
* lib/rubygems/indexer.rb: Add Marshal format index of spec names,
versions and platforms. WIP.
* lib/rubygems/spec_fetcher.rb: WIP for replacement of
Gem::SourceInfoCache and SourceInfoCacheEntry.
* lib/rubygems/dependency.rb: Add #=~.
2008-05-07 John Barnette <>
* lib/rubygems/specification.rb, et. al: Let gems have development
dependencies, which aren't installed (except when --development is
supplied) or activated.
2008-05-02 Eric Hodel <>
* lib/rubygems/indexer.rb: Refactored into simpler more imperative
* lib/rubygems.rb: Leave rbconfig/datadir.rb for non-RubyGems use.
2008-04-16 Eric Hodel <>
* lib/rubygems/server.rb: Refresh the source index per request so new
gems will be found after server startup.
2008-04-15 Eric Hodel <>
* lib/rubygems/source_index.rb: Only print out "Bulk updating" when
verbose, fix #latest_specs documentation.
* lib/rubygems/dependency_installer.rb: Add :cache_dir option for
2008-04-14 Eric Hodel <>
* lib/rubygems/test_utilities.rb: Expose some internal testing
utilities that are of general use.
2008-04-10 Eric Hodel <>
* lib/rubygems.rb: Fix Gem.prefix so it reports nil when rubygems.rb
is in sitelibdir, libdir, or doesn't have 'lib' as a parent directory.
* doc/release_notes/rel_1_1_1.rdoc: RubyGems 1.1.1 release notes.
* lib/rubygems/rubygems_version.rb: 1.1.1.
2008-04-07 Eric Hodel <>
* lib/rubygems/server.rb: Fix fragment URIs. Patch by James Tucker.
* lib/rubygems/commands/update_command.rb: Pass
--no-format-executable to setup.rb. Patch by Stephen Bannasch.
2008-04-06 Chad Woolley <>
* lib/rubygems.rb: Add setter Gems.platforms=, to allow platforms
to be set/reset when invoking or testing RubyGems programatically.
Also force Gems.platforms to automatically reset to default of
[Gem::Platform::RUBY, Gem::Platform.local] if cleared.
* lib/rubygems/version_option.rb: Change add_platform_option
to initialize Gem.platforms to contain only Gem::Platform::RUBY
2008-04-04 Eric Hodel <>
* lib/rubygems/source_index.rb: Make Gem::SourceIndex#refresh!
more-correct. Reported by Paul Haddad.
* lib/rubygems.rb: Add Gem::refresh. Bug #19176 by Hongli Lai.
* lib/rubygems/dependency_installer.rb: Put downloaded gems into
install_dir's cache. Patch #19182 by Richard Brown.
2008-04-03 Eric Hodel <>
* lib/rubygems/source_info_cache.rb: Merge full cache file into
latest data. Don't write cache files when checking for them. Only
update full cache file when we've read it. Refresh all data when
loading all data.
* lib/rubygems/dependency_installer.rb: Fix --force to work without
network for dependent gems. Fix all-fetching test.
* lib/rubygems/commands/query_command.rb: Obey --all flag for gem
* lib/rubygems/commands/environment_command.rb: Don't display
* lib/rubygems/indexer.rb: Fix typo. Patch by Tom Copeland.
* lib/rubygems/command_manager.rb: Display RubyGemsVersion with
* lib/rubygems/commands/pristine_command.rb: Rebuild extensions along
with everything else. Patch #19281 by Dr. Nic Williams.
2008-04-01 Eric Hodel <>
* lib/rubygems.rb: Fix prefix to point to directory above RubyGems,
so RubyGems will be installed into lib/.
* setup.rb: Work around apple's libdir-installed RubyGems, by
installing into sitelibdir.
* Rakefile: Add svnversion to RubyGems version number for `rake
2008-03-31 Luis Lavena <>
* test/: Allow tests to use a random (but controlled) port number
instead of a hardcoded one. This helps CI tools when running
parallels builds.
2008-03-30 Luis Lavena <>
* test/test_gem.rb: Leave APPLE_GEM_HOME tests only to *nixes.
* lib/rubygems/remote_fetcher.rb: Errno::ECONNABORTED raised on Windows
on closed Keep-Alive connections.
2008-03-29 Eric Hodel <>
* gemspecs/: Removed.
* examples/: Removed.
* doc/design/: Removed.
* doc/rdoc_templates/: Removed.
* Rakefile: Package doc/release_notes/.
* setup.rb: Use full path to release_notes, ensure RDoc can be
both removed and installed.
2008-03-28 Eric Hodel <>
* bin/gem, Rakefile: RubyGems now requires Ruby > 1.8.3.
* lib/rubygems.rb: Added Gem.ruby_version, Gem.read_binary,
* lib/, test/: Read files in binary mode for windows and ruby 1.9.
* lib/rubygems/commands/update_command.rb: Only update once.
* lib/rubygems/commands/sources_command.rb: Ditto.
* lib/rubygems/source_index.rb: Fix #remove_extra, #find_missing so
legacy platform gems don't get updated repeatedly.
* doc/release_notes/rel_1_1_0.rdoc: RubyGems 1.1.0 release notes.
* lib/rubygems/rubygems_version.rb: 1.1.0.
2008-03-28 Ryan Woodrum <>
* lib/rubygems/commands/query_command.rb: Add --installed
subcommand to check if a gem and/or version is installed.
* test/test_gem_commands_query_command.rb: Add relevant tests.
* test/gemutilities.rb: Override exit() for query tests.
* test/mockgemui.rb: Add =() to manipulate output values (clear).
2008-03-28 Chad Woolley <>
* lib/rubygems/source_info_cache.rb: Add reset_cache_file.
2008-03-27 Chad Woolley <>
* lib/rubygems/user_interaction.rb: Raise Gem::SystemExitException
instead of exiting, kill unused terminate_interaction!.
* lib/rubygems/exceptions.rb: Add Gem::SystemExitException.
* lib/rubygems/commands/install_command.rb: Raise
Gem::SystemExitException instead of exiting.
* bin/gem: Rescue Gem::SystemExitException and exit with
specified exit_code.
* test/test_gem_commands_install_command.rb: Assert on
Gem::SystemExitException and exit_code in tests.
2008-03-27 Eric Hodel <>
* lib/rubygems/commands/sources_command.rb: Allow sources to be
removed without network. Fixes bug #18644 by Mikel Lindsaar.
2008-03-27 Luis Lavena <>
* lib/rubygems/commands/environment_command.rb: Use platform specific
PATH_SEPARATOR instead of hardcoded ':'
* test/test_gem_commands_unpack_command.rb: Ditto.
* test/test_gem_commands_environment_command.rb: Ditto.
* test/gemutilities.rb: Fix binary file reads being truncated on
* test/test_gem_commands_install_command.rb: Switch to read_binary.
* test/test_gem_commands_update_command.rb: Ditto.
* test/test_gem_commands_server_command.rb: Consider full path when
evaluating location (instead of hardcoded or missing drive leter).
* test/test_gem_installer.rb: Ditto.
* test/test_gem_dependency_installer.rb: exclude no-wrapper tests for
2008-03-26 Luis Lavena <>
* lib/rubygems.rb: Handle backslashes that came from GEM_HOME and
GEM_PATH on Windows.
2008-03-25 Eric Hodel <>
* lib/rubygems/source_index.rb: Add updating from latest index,
default to updating from latest index. Reduces common-case update
to under 3,000 gems at present.
* lib/rubygems/remote_fetcher: Fix error reporting from net/http.
* lib/rubygems.rb: Sort methods, remove last vestiges of autorequire,
RDoc cleanup.
2008-03-23 Luis Lavena <>
* setup.rb: generated Windows stubs will honors prefix using Gem.ruby
instead of hardcoded 'ruby.exe'
* lib/rubygems/installer.rb: generated Windows stubs scripts will now
work from differnt directories than Gem::bindir. Fixes bug #16259 by
Claus Folke Brobak
2008-03-20 Eric Hodel <>
* test/test_gem_source_info_cache.rb: Test with real objects now.
* lib/rubygems/source_index.rb: #latest_specs now has latest specs
for all platforms.
* lib/rubygems/source_info_cache.rb: Add latest cache data, only load
full cache data when needed.
2008-03-20 Luis Lavena <>
* test/gemutilities.rb: Change all the file processing mechanism to
enable binary mode by default (required for Windows file operations
dealing with non-printable characters).
2008-03-19 Luis Lavena <>
* lib/rubygems/package/tar_output.rb: Adapted code to use #wrap instead
of #new when dealing with Zlib::GzipWriter (fixes SEGV and warnings due
GzipWriter object not being closed explicitly).
2008-03-12 Eric Hodel <>
* lib/rubygems/indexer.rb: Add latest_index.
2008-03-09 Eric Hodel <>
* lib/rubygems/defaults.rb: Add special case for RUBY_ENGINE constant
when setting default gem dir.
* Rakefile: Add update_rubinius and diff_rubinius.
2008-03-08 Lincoln Stoll <>
* lib/rubygems/server.rb: Drop use of RDoc's TemplatePage in favor of
2008-03-04 Ryan Davis <ryan@wrath.local>
* lib/rubygems/remote_fetcher.rb: Moved #download from
* lib/rubygems/commands/fetch_command.rb: Updated to use #download.
* lib/rubygems/dependency_installer.rb: install now takes name or dep.
Renamed gather_specs_to_download to find_spec_by_name_and_version.
Modifed #initialize to not take gem name or version.
2008-03-04 Eric Hodel <>
* lib/rubygems/package*: Removed #open_from_io and friends, switched
to #open, no special handling for file names.
* lib/rubygems/package/tar_output.rb: Refactored ::open to use
instance methods.
* lib/rubygems/remote_fetcher.rb: Print out number of requests made
before connection reset.
2008-02-29 Eric Hodel <>
* lib/rubygems/package/tar_reader/entry.rb: Removed is_directory and
is_file? in favor of file? and directory?.
2008-02-28 Eric Hodel <>
* lib/rubygems/package.rb: Broke up Tar bits into separate files.
* lib/rubygems/package/tar_reader/entry.rb: Don't copy TarHeader data
into Entry, go through #header instead. Better tests for
2008-02-27 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Automatically fall back to
local-only install on network error. Fixes bug #15759 by Chauk-Mean P.
* lib/rubygems/source_index.rb: Process spec dirs so that earlier
dirs override later dirs. Fixes bug #14816 by Kurt Stephens.
2008-02-26 Eric Hodel <>
* lib/rubygems/commands/update_command.rb: Only update gems that need
updates. Fixes bug #14780 by Mathieu Lajugie. Don't force
remote-only updates. Properly handle dependencies when updating.
Fixes bug #17488 by Hongli Lai.
* lib/rubygems/commands/environment_command.rb: Display path as a
usable path.
* lib/rubygems.rb: Don't add APPLE_GEM_HOME with ENV['GEM_HOME'].
2008-02-25 Eric Hodel <>
* lib/rubygems.rb: Expand sitelibdir when checking prefix. Fixes bug
#17983 by Hemant Kumar.
* setup.rb: Print release notes on installation. Tell people where
`gem` was installed.
* bin/update_rubygems: Added --help output to explain how to install
earlier versions of RubyGems. Added --version option workaround.
Fixes bug #16842 by Chad Woolley.
* lib/rubygems/install_command.rb: Give proper exit code on failure.
Fixes bug #17438 by Josh Nichols.
2008-02-23 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Change hosts correctly when
redirecting. Handle EOFError from Net::HTTP.
* lib/rubygems/commands/specification_command.rb: Pull specifications
from gem files.
* lib/rubygems/uninstaller.rb: When :executable is set, don't ask the
user. Fixes bug #16812 by Matt Mower. Raise exception instead of
printing message when gem is not in GEM_HOME.
* lib/rubygems/uninstall_command.rb: Print message when gem is not in
* lib/rubygems/commands/cleanup_command.rb: Clean up all old gems.
* lib/rubygems/commands/unpack_command.rb: Scan every gem path when
unpacking. Fixes bug #17602 by Ryan Davis.
2008-02-20 Eric Hodel <>
* lib/rubygems/install_update_options.rb: Add --bindir option to
specify destination to install executables into. Patch #17937 by
Donavan Pantke.
* lib/rubygems/specification.rb: Fix == Bug
#17413 by Andrei Bocan.
* setup.rb: Properly check for deletablitily of user and system
caches. Bug #17869 by Alexey Verkhovsky. Fix --no-format-executable.
Fixes bug #16879 by Charles Nutter.
2008-02-19 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Add persistent connection support.
Patch #18180 by Aaron Patterson.
* lib/rubygems/installer.rb: Fix #shebang to use the ruby install
name. Patch #16878 by Donavan Pantke.
* lib/rubygems/defaults.rb, lib/rubygems.rb: Enable defaults for
Gem.path and Gem.bindir. Patch #17886 by Donavan Pantke.
* test/test_gem_ext_configure_builder.rb: Make test_self_build_fail
more platform independent. Patch #17599 by Martin Krauskopf.
2008-02-14 Eric Hodel <>
* lib/rubygems/commands/fetch_command.rb: Fix a bug when fetching
from non-default sources. Report non-existent gems instead of
2008-01-09 Eric Hodel <>
* lib/rubygems/commands/update_command.rb: Use portable and safe ENV
operation. Patch by usa in ruby SVN revision 14739.
* lib/rubygems/open-uri.rb: Fix tests. Patch by NARUSE Yui.
2007-12-23 Eric Hodel <>
* util/gem_prelude.rb: Remove methods from Gem, not QuickLoader, to
fix warnings.
2007-12-22 Eric Hodel <>
* lib/rubygems/commands/environment_command.rb: Put GEM PATHS in the
correct order.
* lib/rubygems/commands/uninstall_command.rb: Add --install-dir to
specify which local repository to uninstall from. Patch #15151 by
Donavan Pantke.
* lib/rubygems/uninstaller.rb: Only allow uninstallation of gems from
specified directory. Properly clean up executables on uninstall.
Patch #15151 by Donavan Pantke.
* lib/rubygems/install_update_options.rb: Add --no-env-shebang
option. Patch #16508 by Donavan Pantke.
* util/gem_prelude.rb: Use require to load rubygems.rb to make
$LOADED_FEATURES correct on RubyGems update.
2007-12-21 Eric Hodel <>
* util/gem_prelude.rb: Place bin before lib so bin stubs work.
2007-12-20 Eric Hodel <>
* Rakefile: Require Ruby > 1.8.2. Enable CERT_DIR.
* lib/rubygems.rb: Work with RbConfig and Config. Bug #16457 by
Christian Ramilo, John Barnette.
* lib/rubygems/commands/build_command.rb: Relax yaml? test to work
with Ruby 1.8.3.
* lib/rubygems/rubygems_version.rb: 1.0.1.
* doc/release_notes/rel_1_0_1.rdoc: RubyGems 1.0.1 release notes.
2007-12-19 Eric Hodel <>
* lib/rubygems/installer.rb: Revert change that only wrapped
executables with #!.
* lib/rubygems/specification.rb: Warn about a lot of things that
could be wrong with gemspecs on build, including missing #!. Use
'x86-mswin32' for legacy 'mswin32' platform, fix CURRENT platform.
Paired with Luis Lavena.
* lib/rubygems/remote_installer.rb: Deleted.
* lib/rubygems.rb: Removed Kernel#require_gem.
* doc/release_notes/rel_1_0_0.rdoc: RubyGems 1.0 release notes.
* lib/rubygems/rubygems_version.rb: 1.0.0.
2007-12-18 Luis Lavena <>
* lib/rubygems/commands/mirror_command.rb: Work around URI::parse
processing file:// scheme and drive paths on Windows.
* test/test_gem_commands_mirror_command.rb: ditto.
2007-12-17 Eric Hodel <>
* lib/rubygems/installer.rb: Copy files into bindir if they don't
have a shebang. Bug reported by Luis Lavena.
* lib/rubygems/server.rb: Handle platforms in Gem::Server#quick.
Exactly match gem names. Bugs reported by Chad Woolley.
* lib/rubygems/platform.rb: Remove platform constants in favor of
Gem::Platform::CURRENT. Bug reported by Luis Lavena.
* lib/rubygems/dependency_installer.rb: Work around Dir::glob not
understanding File::ALT_SEPARATOR. Bug submitted by Luis Lavena.
2007-12-16 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Be more verbose in error messages
from OpenURI.
* lib/rubygems/server.rb: Be more verbose in error/missing responses.
2007-12-15 Eric Hodel <>
* lib/rubygems/installer.rb: Output extension build results when
really verbose. From bug #15853 John Croisant.
* lib/rubygems/specification.rb: Fix backwards compatibility with
0.9.4, don't allow the platform to be nil or an empty string. Bug
#16177 by Dan Manges.
* setup.rb: Re-exec setup.rb if rubygems is loaded and RUBYOPT is
set. Fixes bug #15974 by Joshua Sierles.
* lib/rubygems/update_command.rb: Tweak formatting of updated
message. Bug #15625 by Bil Kleb.
* lib/rubygems/remote_fetcher.rb: Add URI to exception message for
Gem::RemoteFetcher#fetch_size. Bug #14801 by Bil Kleb.
2007-12-14 Eric Hodel <>
* lib/rubygems/commands/query_command.rb: Don't display duplicate
version numbers. Bug #15828 by Tim Fletcher.
* setup.rb: Fix my stupidity with --help. Patch #16308 by Stephen
Bannasch. Fix --prefix= argument. Bug #16002 by Piglop.
2007-12-13 Eric Hodel <>
* lib/rubygems/commands/server_command.rb: Fix --no-daemon. Bug by
Chad Woolley.
* lib/rubygems/server.rb: Fix Marshal quick index. Bug by Chad
* lib/rubygems/installer.rb: Respect Gem::Specification#bindir. Bug
#16202 by Suraj Kurapati.
* lib/rubygems/commands/update_command.rb: Fix `gem update mysql`.
Bug #16244 by Stephen Bannasch.
2007-12-12 Eric Hodel <>
* lib/rubygems/installer.rb: Add --format-executable option to
install executables with ruby's program-suffix and prefix. Patch
#14688 by Jeremy Kemper. Also, installing in really-verbose mode
prints out written files.
* setup.rb: Add --format-executable option to install gem with ruby's
program-suffix and prefix. Add --help. Fixes bug #16056 by Chad
* lib/rubygems/uninstaller.rb: Fallback to original_platform_name
correctly. Patch #15960 by Nicola Piccinini's friend.
2007-12-11 Eric Hodel <>
* lib/rubygems/validator.rb: Correct test run failures when no tests
are provided. Patch #15701 by Jérémy Zurcher.
* lib/rubygems/commands/mirror_command.rb: Don't File.join a
URI::HTTP. Patch #16116 by Morgan Nelson.
* lib/rubygems/commands/unpack_command.rb: Add --target option to
`gem unpack`. Patch #16154 by Kevin Barnes.
2007-12-10 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Revert to nil for the default
security policy to avoid requiring OpenSSL.
* lib/rubygems/defaults.rb: Consolidate defaults for easier editing.
Patch #15150 by Donavan Pantke.
2007-11-27 Eric Hodel <>
* lib/rubygems/source_index.rb: Remove dependency on forwadable.
Patch by Koichi Sasada.
* lib/rubygems/specification.rb: Reduce dependency on time.rb. Patch
by Koichi Sasada.
2007-11-26 Rich Kilmer <>
* lib/rubygems/version.rb: Fix bug 15948 with version bump
* test/test_gem_version.rb: Test for bug 15948 with version bump
* util/gem_prelude.rb: wrap init code with exception handler
and skip badly formed directory names
2007-11-23 Rich Kilmer <>
* lib/rubygems.rb: Centralize all CONFIG options into Hash
Gem::ConfigMap with keys as symbols, change all references
to CONFIG to ConfigMap
* lib/rubygems/require_paths_builder.rb: Added to support
building .require_paths file
* lib/rubygems/installer.rb: Add building of .require_paths if
* lib/rubygems/platform.rb: Use new ConfigMap hash for arch
* lib/rubygems
* util/gem_prelude.rb: new gem prelude for Ruby 1.9
* test/test_gem_installer.rb: change to use ConfigMap hash
* test/gemutilities.rb: change to use ConfigMap hash
2007-11-21 Daniel Berger <>
* lib/rubygems/platform.rb: now returns
Gem::Platform.local if the arch matches Gem::Platform::CURRENT.
Bugs #15815 and #15782 submitted by Daniel Berger.
2007-11-20 Eric Hodel <>
* lib/rubygems/platform.rb: Handle bare 'mswin32' platform's CPU.
2007-11-19 Eric Hodel <>
* lib/rubygems/rubygems_version.rb: 0.9.5.
2007-11-16 Eric Hodel <>
* test/gemutilities: Add a legacy platform gem to the default test
gems list.
* lib/rubygems/specification.rb: Add Gem::Specification#original_name
for legacy purposes
* lib/rubygems/indexer.rb: Use #original_name to make the indexer
backwards compatible.
* lib/rubygems/master_index_builder.rb: Reduce memory consumption.
2007-11-13 Eric Hodel <>
* lib/rubygems/rubygems_version.rb: beta.
* lib/rubygems.rb: Patch for RUBY_FRAMEWORK for OS X 10.5. Patch
submitted by Laurent Sansonetti.
* lib/rubygems.rb: cygwin, djgpp, mingw are Windows platforms. Fixes
bug #15537 by Roger Pack.
2007-11-11 Eric Hodel <>
* Rakefile: Tasks for maintaining ruby trunk export of RubyGems.
* lib/rubygems/specification.rb: Preserve original platform across
* lib/rubygems/dependency_installer.rb: Retry with original platform
name on fetch error.
2007-11-09 Eric Hodel <>
* lib/rubygems/specification.rb: Set #original_platform only once.
* lib/rubygems/indexer.rb: Handle legacy platforms.
* lib/rubygems/platform.rb: Gem::Platform is a valid argument. Bug
#15511 submitted by Daniel Berger.
* lib/rubygems/custom_require.rb: Fix compatibility with 1.8.2. Bug
#14933 submitted by Aaron Patterson.
* lib/rubygems/command.rb: Now '-V' enables verbose. Bug #14951
submitted by Sasa Ebach.
* lib/rubygems/commands/check_command.rb: Change use of '-v', '-V' to
match above.
* lib/rubygems/package.rb: #send! is gone again.
* lib/rubygems.rb: Don't add custom_require for 1.9.
* test/*: Make compatible with 1.9 import.
2007-10-30 Eric Hodel <>
* lib/rubygems/specification.rb: Don't re-use @platform to maintain
backwards compatibility.
* lib/rubygems/platform.rb: Handle nil and 'ruby' platforms in ::new.
2007-10-20 Daniel Berger <>
* lib/rubygems/uninstaller.rb: Changed '.cmd' to '.bat' in the
remove_executables method for MS Windows. Patch from Luis Lavena.
2007-10-18 Eric Hodel <>
* lib/rubygems/rubygems_version.rb: beta.
2007-10-19 Eric Hodel <>
* lib/rubygems/commands/update_command.rb: Don't install with
dependencies when updating. This is a hack.
2007-10-19 Daniel Berger <>
* setup.rb: gem.cmd stub is now gem.cmd, and the stub generation was
changed - now better for NT. Patch #14725 (Luis Lavena).
* lib/rubygems/installer.rb: Same as for setup.rb.
2007-10-18 Daniel Berger <>
* lib/rubygems/platform.rb: Modified the Platform.local method for MS
Windows for versions built with VC++ 6. Patch #14727 (Luis Lavena).
* test/test_gem_specification.rb: Added version independent tests for
MS Windows. Patch #14727 (Luis Lavena).
2007-10-18 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb: Add platform to User-Agent.
* lib/rubygems/commands/install_command.rb: Fix typo. Debian bug
#443135 submitted by Reuben Thomas.
* lib/rubygems/dependency_installer.rb: Don't install dropped
dependencies. Fixes bug #14724 submitted by Luis Lavena.
2007-10-17 Eric Hodel <>
* lib/rubygems/commands/update_command.rb: Unset RUBYOPT when running
* setup.rb: Re-exec without RUBYOPT if it is set. Fixes bug #14683
submitted by Lyle Johnson.
2007-10-16 Daniel Berger <>
* lib/rubygems/indexer/abstract_index_builder.rb: The compress method
now does a binary read to make MS Windows happy.
2007-10-16 Eric Hodel <>
* setup.rb: Installs bin stubs that warn when you try to use the old
commands. Simple mswin deprecation stubs by Luis Lavena.
2007-10-12 Eric Hodel <>
* setup.rb: Remove source caches on install.
* doc/release_notes/rel_0_9_5.rdoc: Draft added.
* lib/rubygems/rubygems_version.rb: beta.
2007-10-10 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Fix small bug found by Alan C.
2007-10-09 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Use install_dir so custom gem
repos can be used.
* lib/rubygems/specification.rb: Always set required attributes, even
if they match the default.
2007-10-08 Ryan Davis <ryan@wrath.local>
* lib/rubygems.rb: Fixed require order so custom_require is
last. Added HACK tag to remind Jim to release rake.
* test/test_gem_source_index.rb: Fixed latest_specs' tests so
failures were much more readable.
* lib/rubygems/source_index.rb: Fixed latest_specs to deal with
platforms appropriately. Returns array again.
2007-10-08 Eric Hodel <>
* lib/rubygems/config_file.rb: Boost bulk_threshold to 1000, Marshal
format is smaller than yaml format quick index.
* lib/rubygems/installer.rb: Make #shebang correctly rewrite env
* lib/rubygems/specification.rb: Mark for removal, too much
depends upon it now.
2007-10-07 Eric Hodel <>
* lib/rubygems/specification.rb: Sped up ::_load.
* lib/rubygems/source_index.rb: Sped up #search.
* lib/rubygems/version.rb: Replace #to_ints with #ints, and cache
* lib/rubygems/source_info_cache.rb: Only flush cache when it changes.
2007-10-05 Eric Hodel <>
* lib/rubygems/user_interaction.rb: Allow customization of completion
message for progress reporters.
* lib/rubygems/command.rb: Add --quiet option.
* lib/rubygems/commands/generate_index_command.rb: Add description.
2007-10-04 Eric Hodel <>
* lib/rubygems/uninstaller.rb: Also check and uninstall old platform
name to ensure legacy platform gems are uninstalled.
* lib/rubygems/doc_manager.rb: Remove existing rdoc and ri directory
so regenerating docs succeeds even if previously interrupted.
2007-10-02 Eric Hodel <>
* lib/rubygems/source_index.rb: Make #outdated search only for gems
matching the current platform.
* lib/rubygems/commands/dependency_command.rb: Add --platform.
* lib/rubygems/commands/outdated_command.rb: Ditto.
* lib/rubygems/commands/specification_command.rb: Ditto.
* lib/rubygems/commands/update_command.rb: Ditto.
2007-10-02 Wilson Bilkovich <>
* lib/rubygems/specification.rb: Custom Marshal format to reduce index
* lib/rubygems/requirement.rb: Ditto
* lib/rubygems/version.rb: Ditto
2007-10-01 Eric Hodel <>
* lib/rubygems/platform.rb: Handle mswin32 on VC6. Partial patch and
assistance by Luis Lavena. Handle cpu-os-version style platforms for
command-line arguments.
2007-09-30 Eric Hodel <>
* lib/rubygems/specification.rb: Gem::Specification is now
forward-compatible while loading.
2007-09-29 Eric Hodel <>
* lib/rubygems/source_info_cache_entry.rb: Correctly handle URIs.
* lib/rubygems/remote_fetcher.rb: ditto.
* lib/rubygems/remote_options.rb: Add --update-sources option. Patch
#14246 submitted by Alan Francis.
* lib/rubygems/config_file.rb: Add update_sources setting to control
automatic refreshing of sources (patch #14246). Fix bug where things
would be overwritten in ~/.gemrc when they shouldn't.
2007-09-28 Eric Hodel <>
* lib/rubygems/rubygems.rb: Gem.ruby now returns the full path. Added
Gem.prefix to make self updating work right.
* setup.rb, pre-install.rb, post-install.rb: Replace with a small,
simple setup script that works.
* lib/rubygems/commands/update_command.rb: Pass rdoc, ri and prefix
flags down to setup.rb when self updating.
2007-09-26 Eric Hodel <>
* lib/rubygems/version_option.rb: Always include RUBY platform,
allow RUBY platform as an option.
* lib/rubygems/specification.rb: Gems with non-ruby platform sort
last (first in preference for installation).
* lib/rubygems/platform.rb: Allow matching of legacy platforms.
* lib/rubygems/source_index.rb: Add only_platform option to #search.
2007-09-24 Wilson Bilkovich <>
* lib/rubygems/indexer.rb: Generate a Marshal index in parallel to YAML
* lib/rubygems/source_index.rb: Fetch a Marshal index if it exists, to
avoid the memory cost of parsing a huge YAML file
* lib/rubygems/commands/mirror_command.rb: Check for Marshal first
* lib/rubygems/indexer/abstract_index_builder.rb: Index refactoring
* lib/rubygems/indexer/marshal_index_builder.rb: Build Marshal index
* lib/rubygems/indexer/master_index_builder.rb: Simplify YAML generation
* lib/rubygems/indexer/quick_index_builder.rb: Build Marshal quickindex
* lib/rubygems/server.rb: Serve up Marshal index as well as YAML
* lib/rubygems/source_info_cache_entry.rb: Expect a Marshal index
2007-09-23 Eric Hodel <>
* lib/rubygems/commands/fetch_command.rb: `gem fetch` downloads a gem
to the current directory. Feature request #10752 by Bret Pettichord.
* lib/rubygems/commands/local_remote_options.rb, etc.: Fix spelling of
* lib/rubygems/installer.rb: Revert feature request #8818, it
interferes with `ruby -S` and multiple versions of ruby (1.8 and 1.9).
* lib/rubygems/dependency_installer.rb: Fix a bug where the wrong
platform gem would be installed.
* lib/rubygems/version_option.rb: Add --platform.
* lib/rubygems/install_update_options.rb: Verify --security-policy.
* lib/rubygems/local_remote_options.rb: Verify --source, --http-proxy.
2007-09-22 Eric Hodel <>
* lib/rubygems/open-uri.rb: Don't document our OpenURI.
* lib/rubygems/commands/generate_index_command.rb: Fix Indexer class
* lib/rubygems/commands/mirror_command.rb: Fix for 1.9.
* lib/rubygems/commands/pristine_command.rb: Have `gem pristine`
give a better report of what it accomplished.
* lib/rubygems/command.rb: Add optional description field.
* lib/rubygems/installer.rb: Hack around broken Pathname#absolute? on
windows. Patch #14139 by Jim Hughes.
2007-09-20 Eric Hodel <>
* misc files: Tests pass on 1.9.
* test/gemutilities.rb: Added Object#send! stub for 1.8.
* test/test_open_uri.rb: Require gem_open_uri.rb to avoid warnings.
* lib/rubygems/commands/sources_command.rb: Clarify `gem sources -c`
and what `gem sources` does. Patch by Hugh Sasse.
2007-09-19 Eric Hodel <>
* lib/rubygems/platform.rb: Make Gem::Platform a class.
* lib/rubygems/specification.rb: Gem::Specification#validate returns
true, non-Gem::Platform platforms are no longer allowed.
* test/gemutilities.rb: 1.9 compatiblity fixes.
* lib/rubygems/dependency_installer.rb: Work around a bug in URI.parse
which misinterprets "C:/". Patch #13537 submitted by Daniel Berger.
* lib/rubygems/format.rb: Ensure file handles are closed. Patch
#13533 submitted by Daniel Berger.
* test/test_gem_installer.rb: Win32 path fix. Patch #13528 submitted
by Daniel Berger.
* test/gemutilities.rb: Make the platform be a win32 platform on
win32. Fixes confusion in generate_bin_symlink tests. Patch #13529
submitted by Daniel Berger.
* test/test_gem_specification.rb: Sequel to above. Patch
#13535 submitted by Daniel Berger.
* lib/rubygems/source_index.rb: Make the updating cache message more
clear. Patch #12778 submitted by Bil Kleb.
* lib/rubygems/server.rb: Allow gem's rdoc-style.css to be used.
Patch #13589 by Stephen Bannasch.
* lib/rubygems/indexer.rb: Fail on missing builder gem only when
trying to use the indexer. Fixes bug #13939 by Bryan Stearns.
* lib/rubygems/indexer/indexer.rb: Move Indexer up one level in
* lib/rubygems/indexer/compressor.rb: Only used in
Gem::Indexer::AbstractIndexBuilder subclasses, merged there.
* lib/rubygems/command_aids.rb: Merged Gem::CommandAids into
Gem::Command since that's the only place it gets used.
* misc other files: mswin fixes. Paired with Daniel Berger.
2007-08-24 Eric Hodel <>
* lib/rubygems/specification.rb: Fix #full_name for versionless
* lib/rubygems/command_manager.rb: We're only looking for NameError.
* lib/rubygems/command.rb: 1.9 fix.
* lib/rubygems/format.rb: ditto.
* lib/rubygems/installer.rb: ditto.
2007-08-24 Eric Hodel <>
* lib/rubygems/rubygems_version.rb:
2007-08-23 Eric Hodel <>
* lib/rubygems/platform.rb: Add HPUX, AIX and NetBSD. Thanks to
Daniel Berger, Yutaka KANEMOTO and Andre Nathan respectively.
* lib/rubygems/installer.rb: Move all option setting to #initialize to
make `gem pristine` work again.
* lib/rubygems/commands/environment_command.rb: Include platforms.
* lib/rubygems/dependency_installer.rb: Support local non-root
2007-08-22 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Don't reinstall dependencies
existing in the install dir. Don't install dependencies for older
versions of the gem we're installing. #installed_gems now contains
loaded gemspecs. Always prefer local gems. Handle globs correctly.
All deps are now installed into the install_dir.
* lib/rubygems/commands/install_command.rb: Switch to
Gem::DependencyInstaller. Warn when -y is given, it will be removed.
Try our best to install everything the user asked.
* lib/rubygems.rb: Gem.bindir now handles Pathname correctly.
* lib/rubygems/remote_fetcher.rb: Don't downcase anymore.
2007-08-21 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Add installation from local
gems. Install gems in the correct order. Handle -E, -f,
--ignore-dependencies, -i, -r, -l, -b, -P, -w, -v options for `gem
* test/gemutilities.rb: Work around OS X /private/tmp.
* lib/rubygems/platform.rb: Switch to using arch instead of target_*
for JRuby compatibility. Thanks to Nick Sieger.
2007-08-20 Eric Hodel <>
* lib/rubygems/dependency_installer.rb: Add working but unfinished
* lib/rubygems/source_info_cache.rb: Add #search_with_source.
* lib/rubygems/dependency_list.rb: Move #fill_dependencies to
* lib/rubygems/platform.rb: Split from specification.rb. Add methods
to recognize platforms from Config::CONFIG.
* lib/rubygems.rb: Add Gem::platforms.
* lib/rubygems/specification.rb: Disallow String platforms.
2007-08-18 Eric Hodel <>
* lib/rubygems/source_info_cache.rb: Search by Gem::Dependenency.
* lib/rubygems/source_index: Search by Gem::Dependenency.
* lib/rubygems/version.rb: Version can be String or Integer.
Gem::Requirement::default is now >= 0. Gem::Requirement can be built
from a Gem::Dependency.
* lib/rubygems/dependency_list.rb: Uses TSort now. Add
* lib/rubygems/server.rb: Support quick index.
2007-08-17 Eric Hodel <>
* lib/rubygems/dependency_list.rb: For diamond dependencies with
different versions on the bottom of the diamond, trim all but the
latest dependency. This will prevent gems like hoe from being
installed multiple times.
2007-08-15 Eric Hodel <>
* lib/rubygems/installer.rb: Support building mkrf extensions. Fixes
bug #11313. Patch by Jeremy Hinegardner.
* lib/rubygems/installer.rb: Ensure bin files are executable. Fixes
bug #8985 submitted by Ara Howard.
* lib/rubygems/installer.rb: Insert installing gem home dir into bin
wrapper. Patch #8818 by Ara Howard.
2007-08-13 Eric Hodel <>
* lib/rubygems/commands/uninstall_command.rb: Gems with version of 0
can now be uninstalled.
2007-08-11 Eric Hodel <>
* lib/rubygems/config_file.rb: Command-line args override ~/.gemrc
now. Gem.sources is pulled from ~/.gemrc now. Gem::ConfigFile can
write itself out now.
* lib/rubygems/commands/sources_command.rb: Now writes out
Gem.configuration on changes. No longer checks source cache on
2007-08-09 Eric Hodel <>
* lib/rubygems/source_info_cache.rb: Make Gem::SourceInfoCache#search
only search gems in Gem.sources.
* lib/rubygems.rb: Make Gem::configuration a real Gem::ConfigFile
* lib/rubygems/commands/query_command.rb: Fix `gem query --details`.
Add `gem query --no-versions`.
* lib/rubygems/local_remote_options.rb: Make `gem mumble --source URL`
only use that source.
* lib/rubygems/config_file.rb: Fix Gem::ConfigFile#[]= to match
2007-08-08 Eric Hodel <>
* lib/rubygems/commands/specification_command.rb: Match only exact gem
names. Fixes bug #9681. Patch by Michael DeCandia.
* lib/rubygems/commands/unpack_command.rb: Match only exact gem names.
Fixes bug #9681. Patch by Michael DeCandia.
* lib/rubygems/commands/contents_command.rb: Match only exact gem
names. Fixes bug #9681. Patch by Michael DeCandia
* lib/rubygems/remote_fetcher.rb: Perform a GET request if the HEAD
request doesn't have Content-Length. Fixes bug #9771. Patch by Ben
* lib/rubygems.rb: Clear Gem::searcher when we Gem::clear_paths.
Fixes bug #12886. Submitted by Peter Williams.
* lib/rubygems.rb: Add #default_sources and rework #sources to use it.
* post-install.rb: No longer runs install_sources.
* pkgs/sources: Updated to something what a 0.0.2 would look like, if
we ever make one.
2007-08-02 Eric Hodel <>
* lib/rubygems/gem_commands.rb: Removed and broken up into individual
* lib/rubygems/command_manager.rb: Lazily loads gem commands. Now to
use CommandManager just "require 'rubygems/command_manager'" and
everything will be there.
2007-08-01 Eric Hodel <>
* lib/*, test/*: Pushed down dependencies as far as reasonable.
Removed Gem::manage_gems. Now only 14 files are loaded with "require
'rubygems'". Added tests for `gem build` and `gem cert`.
* lib/rubygems/extensions.rb: Added common place for all extensions.
2007-07-26 Eric Hodel <>
* test/test_gem_ext_configure_builder.rb: Linux has different behavior
for `sh ./configure` when configure is missing. Fix adapted from
Patch #10019 by Donavan Pantke.
* lib/rubygems/commands/pristine_command.rb: Compare fully-qualified
paths. Fixes bug #7976 by Lyle Johnson.
* lib/rubygems/config_file.rb: Add ConfigFile#[]=, so --proxy
command-line option works. Fixes #8152 by Justin Sabelkko.
* lib/rubygems/post-install.rb: Make sure we use the
latest-and-greatest RubyGems when running post-install.rb. Fixes Bug
#8411 by Duy Nguyen.
* lib/rubygems/remote_fetcher.rb: An empty HTTP_PROXY means no proxy.
Fixes Bug #9042 by Michael Brodhead.
* lib/rubygems/version.rb: Disallow newlines in version string. Strip
spaces from version string. Fixes Bug #9499 by Bryce Kerley.
* lib/rubygems/commands/sources_command.rb: Fix spelling error. Fixes
Bug #11064 by Chris Eskow.
2007-07-25 Eric Hodel <>
* lib/rubygems/indexer.rb: Create the index in /tmp, then move it into
place when we're done. This will prevent spurious bulk index updates
from occurring while the quick index is missing. Remove the option to
not build the quick index.
* lib/rubygems/commands/generate_index_command.rb: --no-quick is gone.
* lib/rubygems/user_interaction.rb: If stdin is not a tty, it is
unlikely that gem is going to get a response when asking a question.
Patch #10660 by Paul Brannan.
* lib/rubygems/validator.rb: Output test failures when using install
-t. Patch #10659 by Paul Brannan.
* lib/rubygems/custom_require.rb (Kernel#require): Only rescue a
LoadError that matches the file we are requiring. Patch #10723 by
Tyler Rick.
* lib/rubygems/remote_fetcher.rb: Support HTTP basic authentication.
Patch #8121 by Max Dunn.
* lib/rubygems/commands/install_command.rb: Don't raise an error when
a gem has no tests. Patch #11824 by Katsuyuki MIYAMUKO.
2007-07-23 Eric Hodel <>
* lib/commands/contents_command.rb: Add --lib-only option, remove
useless --list option. Feature request #9498 by Martin DeMello.
* lib/rubygems/specification.rb: Restrict to only files in
#require_paths. Add #required_rubygems_version. Feature request
#7780 by Eric Hodel.
* lib/rubygems/commands/dependency_command.rb: Display dependencies for
remote gems. Feature request #12133 by Eric Hodel. -r for reverse
dependencies is now -R.
* lib/rubygems/commands/specification_command.rb: Display
specifications for remote gems. Feature request #12133 by Eric Hodel.
* lib/rubygems/installer.rb (Gem::Installer#install): Check
* lib/rubygems/user_interaction.rb
(Gem::UserInteraction#choose_from_list): Check result for EOF. Fixes
bug #8018. Patch by Jos Backus.
* post-install.rb: Install using absolute path. Fixes bug #10675.
Patch by Jeremy Burks.
* lib/rubygems/commands/environment_command.rb: Add RUBY VERSION to
environment output.
* lib/rubygems/command.rb: Don't worry about duplicated command-line
options, OptionParser takes care of them for us.
2007-07-22 Eric Hodel <>
* lib/rubygems/specification.rb (Gem::Specification#files): Make it
* lib/rubygems/command.rb: Better documentation. -v flag now lets you
get to "really verbose" mode which makes the verbose progress meter
work. Add command groups to separate types of commands easily.
* lib/rubygems/commands/which_command.rb, bin/gemwhich: Move `gemwhich`
under `gem`.
* lib/rubygems/commands/mirror_command.rb, bin/gem_mirror: Move
`gem_mirror` under `gem`.
* lib/rubygems/commands/lock_command.rb, bin/gemlock: Move `gemlock`
under `gem`.
* lib/rubygems/commands/server_command.rb, bin/gem_server: Move
`gem_server` under `gem`.
* lib/rubygems/doc_manager.rb (Gem::DocManager#initialize): Only raise
when operating on the filesystem.
* lib/rubygems/server.rb: Remove option processing, now in
* lib/rubygems/commands/generate_index.rb, bin/index_gem_repository.rb:
Move `index_gem_repository.rb` to `gem generate_index`.
* lib/rubygems/indexer (Gem::Indexer): Extract from
index_gem_repository.rb and merge RubyForge changes.
* lib/rubygems/command_manager.rb (Gem::CommandManager#run): Print
backtrace when --debug is set too.
* lib/rubygems/command_manager.rb (Gem::CommandManager#load_and_instantiate):
Don't infinitely loop in retry.
* bin/gemri: Removed. Everybody should have ri integration now.
* lib/rubygems/config_file.rb: Allow settings to be examined. Pull
settings from .gemrc.
* lib/rubygems/commands/environment_command.rb: Add ruby executable
and configuration settings to `gem env`.
* lib/rubygems/indexer/indexer.rb (Gem::Indexer::Indexer#build_index):
Now uses UserInteraction.
* various: Use UserInteraction for output.
* lib/gemconfigure.rb: Removed. Same as multiple gem commands.
* lib/rubygems/commands/contents_command.rb: Removed extra --verbose
* lib/rubygems/gem_commands.rb (Gem::LocalRemoteOptions): Moved -B,
--source, -p from Gem::Commands::common_options.
2007-07-22 Chad Fowler <>
* lib/rubygems/gem_commands.rb: Added another example to the gem
example output (Gile Bowkett)
* test/test_documentation_generation.rb, lib/rubygems/doc_manager.rb:
Added a test for documentation generation and fixed a bug when doc
location is not writable.
2007-06-16 Eric Hodel <>
* lib/rubygems/gem_path_searcher.rb (Gem::GemPathSearcher): Moved out
of lib/rubygems/custom_require.rb and added tests.
2007-06-02 Jim Weirich <>
* lib/rubygems/source_info_cache.rb (Gem::try_file): Fix for issue
where a non-existing source cache file causes the gem command to
not find a gem. This fixes it by marshalling out an empty
hash. (Thanks to Nick Sieger for this fix).
2007-06-01 Jim Weirich <>
* lib/rubygems.rb
(Gem::OperationNotSupportedError::latest_partials): Changed from
match data style to $1 style regexp (on the recommendation of
better performance).
2007-05-30 Jim Weirich <>
* lib/rubygems/source_index.rb (Gem::SourceIndex::update):
Modified to get the bulk_threshhold from the configuration.
(Gem::SourceIndex::convert_specs): Ryan removed the "reduce_specs"
method because it is not needed any more and is creating memory
* lib/rubygems/config_file.rb (Gem::ConfigFile): Added
bulk_threshhold field to ConfigFile.
(Gem::ConfigFile::initialize): Initialize bulk threshhold to 500.
* lib/rubygems/command.rb
(Gem::Command::specific_extra_args_hash): Added
-B (--bulk-threshhold) option to allow user specified bulk
download threshhold.
2007-05-23 Jim Weirich <>
* lib/rubygems/commands/sources_command.rb
(Gem::Commands::SourcesCommand::initialize): Added a --clear-all
option to the sources subcommand. Clear-all will remove the cache
* lib/rubygems/source_info_cache.rb (Gem): Moved system_cache_file
and user_cache_file to class methods so that we can get the file
names without creating a SourceInfoCache instance.
2007-05-23 Eric Hodel <>
* lib/rubygems/source_info_cache.rb: Teach SIC to repair itself
when it encounters a bad cache file.
2007-05-14 Chad Fowler <>
* lib/rubygems/command_manager.rb: Re-added registration for
gem cleanup command which I accidentally removed during refactoring.
2007-05-10 Jim Weirich <>
* lib/rubygems/remote_installer.rb: Uncommented the require
'sources' line.
* lib/rubygems/source_info_cache.rb: Uncommented the require
'sources' line.
* lib/rubygems/rubygems_version.rb (Gem): Bumped to version 0.9.3
in preparation for release.
* lib/rubygems/package.rb (Gem::TarInput::zipped_stream):
Zipped_stream now always uses the in memory string IO buffer.
There were just too many problems with ZLib (on windows)
2007-03-26 Jim Weirich <>
* (Index): new digest technique.
* lib/rubygems/validator.rb (Gem::Validator::verify_gem): Removed
really old MD5 and replaced with gem based digests.
* experimental/deployment.rb (Gem::Deployment::Manager::initialize):
New digest technique.
* experimental/test_deployment.rb (TestDeployment::test_deployed_file):
New digest technique.
2007-03-26 Chad Fowler <>
* Extracted the big ball of mud that was gem_commands.rb into
separate files.
2007-03-17 Chad Fowler <>
* Various ruby 1.8.6 fixes for failing tests.
* Updated setup.rb to 3.4.1
* Renamed cmd_manager to command_manager to keep names consistent
* lib/installer.rb: Rework path checking to use Pathname (ara howard bug #8811)
2007-03-02 Eric Hodel <>
* lib/rubygems.rb: Add bin directory before library directory,
otherwise gems like rake don't work.
2007-03-01 Eric Hodel <>
* lib/rubygems/open-uri.rb: Fix all the infinite loop errors.
* lib/rubygems.rb: Add dirs from activate after -I and ENV['RUBYLIB']
dirs. Otherwise gems won't allow -I to work when #gem is called.
2007-02-11 Chad Fowler <>
* test/gemutilities.rb: Fix to make Windows tests pass. (Anatol Pomozov)
2007-02-05 Jim Weirich <>
* lib/rubygems/rubygems_version.rb (Gem): Bumped to version 0.9.2
and made a release.
2007-02-04 Chad Fowler <>
* Fixed failing tests (changed from assert_equal to assert_match to
deal with ARGV inconsistencies in test vs. production).
2007-02-03 Jim Weirich <>
* Bumped version to
* lib/rubygems/gem_open_uri.rb: Added the patched open-uri back
into the gems software. Evidently, the 1.8 version of open-uri
does not handle authenticating proxies with username and password.
* lib/rubygems/source_info_cache.rb (Gem::cache_data): Added
rescue block to capture bad file loads. The original rescue was
only around the marshal load (bug was probably introduced when the
file data was preloaded into a string).
(Gem::set_cache_data): Added set_cache_data to be used during
testing to avoid reload the cache file over and over.
* lib/rubygems/gem_commands.rb: Added require for command class so
that this file can be loaded independently.
* lib/rubygems/source_index.rb (Gem::SourceIndex::outdated): Minor
* test/gemutilities.rb
(RubyGemTestCase::util_setup_source_info_cache): Minor cleanup
* test/test_gem_source_info_cache.rb
(TestGemSourceInfoCache::test_write_cache_user): Switched to using
set_cache_data here and several other places to avoid rereading
the cache data over and over again.
2007-02-02 Chad Fowler <>
* lib/rubygems/gem_commands.rb:
Fixed gem unpack (broken since 0.9.1)
2007-01-20 Eric Hodel <>
* lib/rubygems/source_info_cache.rb (Gem::SourceInfoCache#cache_data):
Read the source_cache in binary mode for mswin.
2007-01-16 Eric Hodel <>
* lib/rubygems/rubygems_version.rb (Gem): Released 0.9.1.
2007-01-15 Eric Hodel <>
* lib/rubygems/installer.rb (Gem::Installer#extract_files): Only allow
installation to absolute directories. (Call File::expand_path first).
More informative message for attempting to install with bad path.
* post-install.rb: Install sources first, since its rather important.
2007-01-14 Eric Hodel <>
* lib/rubygems/source_info_cache.rb: require 'fileutils', as its
2007-01-12 Eric Hodel <>
* lib/rubygems/installer.rb (Gem::Installer#extract_files): Don't
allow gems to place files outside the installation directory. Fixes
bug 7751 by Gavin Sinclair.
2007-01-08 Jim Weirich <>
* lib/rubygems/specification.rb
(Gem::Specification::test_suite_file): Added rescue clause for
(Gem::Specification::add_bindir): Added rescue clause for
* test/test_specification.rb
Added a sanity check on hash for some pathologically bad case.
Added sanity check for pathologically bad executables field.
2007-01-08 Eric Hodel <>
* lib/rubygems/gem_commands.rb (Gem::PristineCommand#execute): Better
* lib/rubygems.rb, lib/rubygems/custom_require.rb: Correctly include
documentation for methods added to Kernel.
2007-01-07 Eric Hodel <>
* Rakefile: Include GPL.txt. Fixes bug #7572 by David Lee.
2007-01-06 Jim Weirich <>
* lib/rubygems/rubygems_version.rb (Gem): Bumped to version
* lib/rubygems/specification.rb
(Gem::Specification::test_suite_file): Rewrote default_executable
to be a bit more explicit.
(Gem::Specification::add_bindir): Rewrote the 'files' accessor to
handle pathologically bad input.
(Gem::Specification::copy_of): Added as_array private method.
* Rakefile (package_version): Added '*.out' to clobber list.
Removed the broken-1.0.0.gem file from the clobber list.
* test/test_specification.rb
Seriously beefed up tests for certain specification issues.
* test/gemenvironment.rb (TestEnvironment::create): Added the 'f'
flag to deleting 'gemhome'.
2006-12-30 Eric Hodel <>
* post-install.rb, lib/rubygems/server.rb: RubyGems now installs RDoc
and ri for itself.
2006-12-28 Eric Hodel <>
* lib/rubygems/installer.rb (Gem::Installer#build_extensions):
Extension build failures now raise Gem::Installer::ExtensionBuildErrors.
2006-12-26 Eric Hodel <>
* lib/rubygems/package.rb (Gem::Package::TarInput#initialize): Bad
packages now raise FormatError instead of a generic RuntimeError.
* lib/rubygems/installer.rb (Gem::Installer#install): Raise an
InstallError when we have a bad gem file.
2006-12-25 Jim Weirich <>
* lib/rubygems/custom_require.rb (Gem::GemPathSearcher::find):
Removed SUFFIX_PATTERN. Evidently this was miss during an earlier
attempt to remove it.
(Gem::GemPathSearcher::matching_file): Changed reference to
SUFFIX_PATTERN into a call to Gem.suffix_pattern.
* Removed tab characters from numerous source files.
* lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): Removed
stray tab characters.
* lib/rubygems.rb (Kernel::require_gem): Added file and line
number information to require_gem worning (makes it easier to
track down those offending lines of code).
(Kernel::location_of_caller): Added helper function to determine
file and line number of caller.
2006-12-25 Eric Hodel <>
* lib/rubygems/installer.rb (Gem::Installer#app_script_text):
Simpler, more readable bin script.
* lib/rubygems/gem_commands.rb (Gem::PristineCommand#execute):
Regenerate bin scripts. This will clean up require_gem in scripts.
2006-12-24 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#fetch_path):
Rescue various errors and return a more-friendly error.
2006-12-23 Eric Hodel <>
* lib/rubygems/command.rb lib/rubygems/gem_commands.rb: Make help
output fit in 80 columns.
* lib/rubygems/rubygems_version.rb: Bump version to, beta
time! (Oops, didn't go into beta.)
2006-12-20 Eric Hodel <>
* lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#fetch_size): Give
a sensible error on bad URIs.
* lib/rubygems/gem_commands.rb (Gem::SourceCommand): Allow management
of sources in source_cache. Fixes bug #1128.
* lib/rubygems.rb (Kernel#require_gem): Add deprecation warning in
favor of gem.
2006-12-19 Eric Hodel <>
* lib/rubygems/installer.rb (Gem::ExtBuilder): Refactored for
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller#specs_n_sources_matching): Don't display gems
that can't be installed.
* lib/rubygems.rb, pre-install.rb: Fix installation errors on 1.9.
Fixes bug #4536 by Ryan Davis.
* lib/rubygems/source_index.rb, lib/rubygems/gem_commands.rb,
lib/rubygems-custom_require.rb: Use File.join with glob strings.
Fixes bug #1096 submitted by Chad Fowler.
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller#install_dependencies): Make --force actually
force. Fixes bug #7365 by Robert James.
2006-12-18 Eric Hodel <>
* lib/rubygems/gem_commands (Gem::OutdatedCommand): Add a way to see
which gems are out-of-date.
* setup.rb: Ignore errors for .config and InstalledFiles when
the source path is read-only/NFS. Fixes bugs #1395 and #1374. Patch
by Ryan Davis.
* bin/gem_server: Pull code out into lib/rubygems/server.rb for
reusability. Closes Feature Request #2220 by Chris Morris.
2006-12-16 Chad Fowler <>
* test/: Added functional test for extension gems proving that
non-compiling extensions don't result in success message.
* lib/rubygems/specification.rb: Raise exception if loaded spec is
nil. Closes bug #7299.
* test/gemenvironment.rb: Clean out gemhome every time to avoid dirty
directory failing tests.
* lib/rubygems/installer.rb: Change uninstall to require a full gem
name (not a partial match). Fixes bug #6007 and related unreported
2006-12-15 Eric Hodel <>
* lib/rubygems/installer.rb (Gem::Uninstaller): Correctly uninstall
executables if GEM_HOME is set. Patch #2264 by Sylvain Joyeux.
* lib/rubygems.rb (Gem::loaded_specs): Expose list of currently loaded
* lib/rubygems/gem_commands (Gem::UninstallCommand): Allow multiple
gems to be uninstalled at once.
2006-12-14 Eric Hodel <>
* post-install.rb: Don't attempt to read unreadable files. Fixes
bug #2851.
2006-12-13 Eric Hodel <>
* pre-install.rb.rb, post-install.rb: Don't call manage_gems because
we don't have sources installed yet. Bump version requirement to
1.8.2 since rubygems/open-uri.rb was removed. Should fix bug #6206.
* lib/rubygems/installer.rb (Gem::Installer#build_extensions): Capture
stderr into results when building extensions.
* lib/rubygems/gem_commands.rb (Gem::ContentsCommand): Allow version
to be passed to gem contents. Not backwards compatible, -v now -V and
vice versa. Select newest gem for contents. Fixes bugs #2723, #7225.
Patches by Sava Chankov, Tom Pollard.
* lib/rubygems/gem_commands.rb (Gem::InstallCommand#execute): Allow
install errors to result in non-zero exit code. Fixes bug #2773.
2006-12-03 Eric Hodel <>
* lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#install):
Add :cache_dir option to override the default.
* lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#download_gem):
Check cache to see if the gem has been cached before downloading.
2006-12-02 Jim Weirich <>
* lib/rubygems.rb (Gem::OperationNotSupportedError::suffixes,
Gem::OperationNotSupportedError::suffix_pattern): Removed
duplicate copies of the SUFFIX_PATTERN by providing a global
method Gem.suffixes and Gem.suffix_pattern.
* lib/rubygems/remote_fetcher.rb (Gem::open_uri_or_path): Reworked
the connection options for the open-uri call. Since we are not
using the rubygems supplied open_uri, we can use some new options
available that make proxy handling much easier.
(Gem::file_uri): Renamed is_file_uri to file_uri?.
* lib/rubygems/loadpath_manager.rb (Gem::LoadPathManager::self):
Added .jar to list of suffixes.
* test/functional.rb (FunctionalTest::test_env_remotesources):
Changed test to uses Gem.sources (the sources method on
remote_fetcher was removed).
* test/test_remote_fetcher.rb (TestRemoteFetcher): Renamed some of
the test constants and instance variables so that they were more
consistent and explained the tests a wee bit better.
(TestRemoteFetcher::test_no_proxy): Added assert_data_from_server
and assert_data_from_proxy to make it clear what the test was
doing and give better error messages on errors.
(TestRemoteFetcher::assert_data_from_server): Added
(TestRemoteFetcher::assert_data_from_proxy): Added
2006-11-30 Chad Fowler <>
* lib/rubygems/open-uri.rb: Removed the duplicated library.
2006-11-30 Eric Hodel <>
* lib/rubygems/specification (Gem::Specification#eql?): Allow gemspecs
to be used intelligently with Array#- and Array#uniq.
* lib/rubygems/installer.rb: Return extension-building results in
Exception on build failure.
* lib/rubygems/remote_installer.rb: Ensure gems with similar names
cannot be matched for install. (Broken when searching was removed
from RemoteInstaller.)
2006-11-29 Eric Hodel <>
* post-install.rb: Now requires rbconfig.
* lib/rubygems/specification.rb, lib/rubygems/version.rb: Fixed many
ivar warnings due to YAML specs.
* lib/rubygems/validator.rb, lib/rubygems/validator.rb
(Gem::Validator#unit_test Gem::RemoteInstaller::): Ensure the
current directory is restored.
* lib/rubygems/remote_fetcher.rb, lib/rubygems/remote_installer.rb,
lib/rubygems/installer.rb: Raise more-friendly and less-deadly errors.
* lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#install):
Create version requirement correctly.
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller#find_gem_to_install): Allow RemoteInstaller to
work with SilentUI.
* lib/rubygems/remote_fetcher.rb (RemoteFetcher#open_uri_or_path):
Don't double-require open-uri.
2006-11-27 Eric Hodel <>
* lib/rubygems/specification.rb
(Gem::Specification#default_executable): Fixed bug where @executables
could be nil when loaded from index.
2006-11-21 Eric Hodel <>
* lib/rubygems/source_index.rb (Gem::SourceIndex#latest_specs): Grab
the latest versions of everything in the index. Written by Ryan
2006-11-20 Rich Kilmer <>
* lib/rubygems/cmd_manager.rb: Added PristineCommand
* lib/rubygems/gem_commands.rb: Added PristineCommand to restore
gems to pristine condition in the event of files begin deleted
based on the cached .gem file
2006-11-19 Eric Hodel <>
* lib/rubygems/*_fetcher.rb: Removed code specific to remote source
index updating.
* lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#search):
Moved to Gem::SourceInfoCache#search
* lib/rubygems/source_info_cache.rb: Taught to update itself
* lib/rubygems/source_info_cache_entry.rb: Taught to update itself
* lib/rubygems/source_index.rb: Taught to update itself from a uri.
2006-11-18 Chad Fowler <>
* lib/rubygems/installer.rb: Applied Kevin Clark's patch to make
RubyGems recognize mkrf files.
2006-11-17 Eric Hodel <>
* test/test_remote_fetcher.rb: Don't allow files in Dir.pwd to make
tests fail. Spotted by Chad Fowler.
* lib/rubygems/remote_installer.rb (Gem::RemoteFetcher,
Gem::CacheFetcher): Break out of remote_installer.rb into separate
* lib/rubygems/remote_installer.rb (Gem::SourceInfoCache,
Gem::SourceInfoCacheEntry): Allow requiring just the source cache
without the remote fetcher.
2006-11-16 Eric Hodel <>
* test/test_local_cache.rb: Moved to better name
* test/test_gem_source_info_cache.rb: Renamed test methods to match
implementations. Sorted test names.
* lib/rubygems/remote_installer (Gem::SourceInfoCache): cache_data no
longer resets dirty flag. Sped up source cache loading. Exposed
cache file name in use.
2006-11-15 Eric Hodel <>
* test/, lib/: Made files -w clean.
* test/: Made tests run independently.
* Rakefile: Tests now run with warnings on.
2006-11-14 Eric Hodel <>
* lib/rubygems/user_interaction.rb (Gem::StreamUI#progress_reporter):
Fix for Gem.configuration.verbose = nil, false
* lib/rubygems.rb (Gem::configuration): Fix RakeFileUtils pollution.
2006-10-05 Jim Weirich <>
* lib/rubygems/installer.rb (Gem::Installer::shebang): Updated to
optionally call env_shebang if the command line option is set.
(Gem::Installer::shebang_env): Added this method.
2006-09-25 Jim Weirich <>
* lib/rubygems/rubygems_version.rb (Gem): Bumped to version
* lib/rubygems/security.rb (Gem::Security::Exception): Added
permissions for cert files and directories.
(Gem::Security::Policy::verify_gem): File.exists? => File.exist?
(Gem::Security::self.verify_trust_dir): Beefed up code to create
trust directory structure.
(Gem::Security::self): Apply permissions when creating trust
* lib/rubygems/package.rb (TarInput::initialize): File.exists? =>
2006-09-24 Jim Weirich <>
* lib/rubygems.rb
(Gem::OperationNotSupportedError::configuration): Added
method_missing to configuration hash to allow nicer reference
2006-09-22 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::initialize): Proxy patch fixup to
escape user/password from Anatol Pomozov.
(Gem::RemoteSourceFetcher::connect_to): Proxy patch fixup to
escape user/password from Anatol Pomozov.
* test/test_remote_fetcher.rb (TestRemoteFetcher::setup): Proxy
patch fixup to escape user/password from Anatol Pomozov.
(TestRemoteFetcher::test_no_proxy): Proxy patch fixup to escape
user/password from Anatol Pomozov.
* test/io_capture.rb (Gem::IoCapture): Created new IoCapture
module to handle capturing output of code under test.
* test/test_installer.rb
(TestInstaller::test_generate_bin_symlinks_win32): Removed ugly
$TESTING hack and substituted new io capture module.
(TestInstaller::test_install_with_message): Removed one-off stdout
capture and replaced with new IO Capture module.
2006-09-19 Jim Weirich <>
* lib/rubygems/rubygems_version.rb (Gem): Bumped to version
* test/test_version_comparison.rb (TestRequirementEquality): Added
more tests for Dependency equality testing and one additions check
for requirement vs non-requirement equality.
* lib/rubygems/version.rb (Gem::Dependency::==) Fixed '=' bug in
'==' code.
2006-09-18 Chad Fowler <>
* lib/rubygems/remote_installer.rb
Only show the last 3 gem versions on a multiplatform remote
install list.
2006-09-18 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller::install): Added Hugh Sasse's patch for
skipping gems on install.
* lib/rubygems/rubygems_version.rb (Gem): Bumped to
* lib/rubygems/version.rb (Gem::Dependency::hash): Added hash code
--http-proxy, the ENV var http_proxy and with no proxy.
2006-08-26 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller::download_gem): Fixed download_gems so that
it properly passes the proxy option to the fetcher class. (based
on patch by Andy Shen).
2006-08-12 Jim Weirich <>
* bin/index_gem_repository.rb (Indexer::sanitize): Added a
sanitize step to the gem index generation in the hope of avoiding
problems with non-ASCII names in the yaml data.
2006-06-14 Jim Weirich <>
* Rakefile (announce): Added 1.9 hack for ENV['CERT_DIR']. Remove
this in the future if 1.9 behavior changes.
2006-06-13 Jim Weirich <>
* Rakefile: ENV['CERT_DIR'] is now '' rather than nil.
* lib/rubygems/specification.rb (Gem::Specification::initialize):
Eric added some 1.9 compatibility code (funcall vs send).
* lib/rubygems/package.rb (TarOutput::self): Eric added some 1.9
compatibility code (funcall vs send).
* experimental/deployment.rb (Gem::Deployment): Moved the
deployment code out of the live code base into the experimental
directory. The code wasn't used and the tests were not all
2006-06-11 Jim Weirich <>
* bin/gemri: Added gemri to bin directory.
* lib/rubygems/custom_require.rb (Gem::GemPathSearcher::find):
Added .rbw to suffix pattern in custom_require.
2006-06-07 Jim Weirich <>
* lib/rubygems.rb: Added copyright notices to all Ruby files.
2006-04-07 Jim Weirich <>
* lib/rubygems/gem_commands.rb (Gem::RDocCommand::execute): Added
RI option to the rdoc subcommand.
2006-04-05 Jim Weirich <>
* test/test_parse_commands.rb
(TestParseCommands::test_parsing_update_options): Fixed unit tests
to assert that the install dir is expanded.
* lib/rubygems/doc_manager.rb (Gem::DocManager::generate_ri):
Break out from generate_rdoc to support installing all RI docs
* lib/rubygems/gem_commands.rb
(Gem::InstallUpdateOptions::add_install_update_options): Expanded
repository directory to absolute path.
(Gem::InstallCommand::execute): Make sure that *all* of the RI
documents are generated before generating any RDocs (due to a bug
in the RDoc library).
* lib/rubygems/installer.rb (Gem::ExtExtConfBuilder::self): Fixed
typo in ExtExtConfBuilder that prevented C based gems to install.
(Gem::ExtExtConfBuilder::self): Installed patch to prevent the
overriding of target_prefix in native extensions (thanks to Aaron
Patterson for the patch).
2006-04-04 Jim Weirich <>
* lib/rubygems/rubygems_version.rb (Gem): Bumped to version
* lib/rubygems/incremental_fetcher.rb
(Gem::IncrementalFetcher::update_cache): Now falls back to bulk
updates if the number of gems if over 50.
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::source_index): Added "bulk" to the
update message to differentiate it from the incremental message.
* lib/rubygems/specification.rb
(Gem::Specification::Specification): Modified to add dashes to
gemspecs generated under Ruby 1.8.3. This makes it easier to run
RubyGems on a 1.8.2 system.
2006-04-01 Jim Weirich <>
* lib/rubygems/doc_manager.rb (Gem::DocManager::run_rdoc): Changed
exception handler to print error message if document generation
fails, but then to continue with the rest of the installation.
Permission errors still terminate the install because if one
install fails because of permission problems, chances are that all
will fail.
(Gem::DocManager::install_ri): Removed wrapping of exceptions with
DocumentError. Most exceptions now don't propagate out of
(Gem::DocManager::install_rdoc): Removed wrapping of exceptions
with DocumentError. Most exceptions now don't propagate out of
2006-02-23 Jim Weirich <>
* bin/index_gem_repository.rb (MasterIndexBuilder::cleanup): Fixed
bug where we were trying to read the index file (to compress it)
before it was closed, often leading to a truncated index file.
Tue Jan 24 16:26:13 2006 Chad Fowler <>
* lib/rubygems/config_file.rb
Luca Pireddu reported a fatal error when permissions on
.gemrc were too restrictive. Fixed.
Tue Dec 6 14:51:13 2005 Jim Weirich <jim@tardis>
* lib/rubygems/source_index.rb
(Gem::SourceIndex::load_specification): Added an untaint call to
make the code run in SAFE=1 mode under 1.8.3.
(Gem::SourceIndex::load_gems_in): Untaint here too.
* lib/rubygems/installer.rb (Gem::Installer::install): Untaint
here too.
(Gem::Installer::extract_files): Untaint here too.
* lib/rubygems/custom_require.rb
(Gem::GemPathSearcher::matching_file): Untaint here too.
* test/gemenvironment.rb: Added $SAFE=1 to the test environment to
make sure we can run in $SAFE mode.
2005-12-03 Jim Weirich <jim@tardis>
* lib/rubygems/rubygems_version.rb (Gem): Bumped version to'
* lib/rubygems/user_interaction.rb
(Gem::StreamUI::SimpleProgressReporter::done): Added several new
progress reporters.
* lib/rubygems/command.rb
(Gem::Command::specific_extra_args_hash): Added --verbose
* lib/rubygems/config_file.rb (Gem::ConfigFile::handle_arguments):
Added --traceback as alias for --backtrace (I always get them
(Gem::ConfigFile::initialize): Added a verbose option.
2005-11-28 Jim Weirich <jim@tardis>
* lib/rubygems/remote_installer.rb
(Gem::SourceInfoCacheEntry::replace_source_index): Fixed the
SourceIndexCacheEntry so that it will manufacture an empty source
index if given a nil value for the +si+ value.
2005-11-08 Chad Fowler <>
* lib/rubygems.rb: Ara Howard's fix to allow 0.0.0 to be a valid gem
2005-11-08 Chad Fowler <>
* lib/rubygems/gem_commands.rb: Fixed bug in gem unpack. It was
sorting incorrectly, resulting in the wrong version being unpacked in
some edge cases. Thanks to Jakob Skjerning for the detailed bug report.
2005-11-03 Chad Fowler <>
* lib/rubygems/installer.rb: Fixed bug that would cause the executables
from the wrong gem to be uninstalled if the names matched the same
regex. Thanks Eric Hodel.
2005-11-01 Jim Weirich <jim@tardis>
* lib/rubygems/gem_commands.rb (Gem::UpdateCommand::initialize):
Upgrade => Update change.
(Gem::UpdateCommand::execute): Upgrade => Update change.
(Gem::UpdateCommand::execute): Upgrade => Update change.
2005-11-01 Chad Fowler <>
* lib/rubygems/gem_commands.rb: Allow gem unpack to accept a gem file
path instead of gem name: gem unpack mygem-1.0.0.gem.
2005-10-31 Chad Fowler <>
* lib/rubygems/installer.rb: Tilman Sauerbeck's patch to support
extensions built with Rake!
2005-09-13 Jim Weirich <>
* lib/rubygems/package.rb (TarInput::initialize): Removed
requirement for SSL when signatures are found in a gem. Only
require SSL if the security policy requires checking the
* lib/rubygems/custom_require.rb (Kernel::require): Disabled
autorequire during custom require.
2005-09-07 Jim Weirich <>
* lib/rubygems/gem_openssl.rb (Gem::ensure_ssl_available): Added a
test in gem_openssl to make sure the ruby portion of ssl is also
2005-08-31 Jim Weirich <>
* Rakefile (install): Changed the rake install task to use setup.rb.
2005-07-08 Chad Fowler <>
* lib/rubygems/remote_installer.rb: Applied Daniel Roux's patch
to make RubyGems work with authenticating proxies.
2005-07-08 Jim Weirich <>
* Preparing for release 0.8.11.
2005-06-12 Jim Weirich <>
* lib/rubygems/installer.rb
(Gem::Installer::installation_satisfies_dependency): Refactored
dependency check into ensure_dependency! and
2005-06-12 Chad Fowler <>
* lib/rubygems.rb,lib/rubygems/installer.rb: Applied Mark Hubbart's
* lib/rubygems/remote_installer.rb: Applied David Glasser's install-
* Applied Paul Duncan's incredibly complete gem signing patch.
Thanks, Paul!
* lib/rubygems/installer.rb: Fixed bug in installer that caused
dependency installation not to work.
2005-06-06 Chad Fowler <>
* lib/rubygems/specification.rb: Fixed Erik hatcher's reported bug
of gem directories having "-" at the end of their names (e.g.
2005-06-01 Jim Weirich <>
* scripts/specdoc.rb (_resolve_links): Updated to generate hieraki
format so it can be included in the site.
* test/test_specification.rb (TestSpecification::test_to_ruby):
Fixed test on date that hard-coded a specific date.
2005-05-29 Jim Weirich <>
* Changes from the Seattle Code fest: (1) Package list command
(e.g. gem inspect GEM). (2) .gemrc settings now allow cvsrc like
options to set defaults per subcommand. (3) The autorequire spec
attribute will now accept a list. (4) Binwrappers vs symlinks
(more info to follow). (5) Substituted Time for Date in specs,
increasing performance dramatically in an important area.
2005-05-04 Jim Weirich <>
* lib/rubygems.rb (Gem::Exception::find_home): Changed rescue
clause from Exception to StandardError. Exception doesn't seem to
catch everything ... I'm not sure I understand why.
2005-04-29 Chad Fowler <>
* lib/rubygems/specifiation.rb: Marcel Molina's patch to discover
which attributes in the spec are Array attributes.
2005-04-27 Chad Fowler <>
* lib/rubygems/gem_commands.rb: -y is now a synonym for
2005-04-21 Chad Fowler <>
* lib/rubygems/installer.rb: Added non-require_gem dependency check
for installation.
2005-04-03 Chad Fowler <>
* pre-install.rb: Added version check to RubyGems installation.
2005-03-25 Jim Weirich <>
* lib/rubygems/rubygems_version.rb (Gem): Created release for
* lib/rubygems/gem_commands.rb
(Gem::UpdateCommand::do_rubygems_update): Update --system now runs
the ruby command directly rather than trying to load the
update-rubygems command. There were too many things to go wrong
with the old way.
2005-03-24 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller::find_dependencies_not_installed): Fixed to
reload source index before attempting to detect dependencies.
2005-03-23 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller::find_dependencies_not_installed): Switched
to using SourceIndex#find_name to detect missing dependencies,
avoiding a gem activation during an install.
* lib/rubygems/installer.rb (Gem::Installer::install): Removed
activate call from install step. If we need to do something about
dependencies at this time, then we need a better way to do them.
* lib/rubygems.rb: Removed the require for rubygems/timer.
2005-03-16 Jim Weirich <>
* test/gemenvironment.rb (TestEnvironment::create): Added require
on gem/builder.
* lib/rubygems/source_index.rb (Gem::SourceIndex::initialize):
Allowing default argument to new to be an empty hash.
(Gem::SourceIndex::from_installed_gems): Refactored into a class
method that invokes a instance method.
(Gem::SourceIndex::refresh): Refresh now does a complete reload
from disk. This should be more accurate that the earlier version.
* lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): removed
unneeded refresh!.
* lib/rubygems.rb (Gem::Exception::source_index): Removed
automatic refresh from Gem.source_index ... it wasn't reliable
when removing installed gems.
(Gem::Exception::activate): Added detection of previously loaded
2005-03-15 Chad Fowler <>
* bin/gem_server: (htonl) rdoc opens in existing browser window.
2005-03-14 Jim Weirich <>
* Released 0.8.8
2005-03-14 Jim Weirich <>
* Released 0.8.7
2005-03-13 Gavin Sinclair <>
* lib/rubygems/installer.rb (Gem::Installer#shebang): Refactored and
stripped result to avoid ^M issues.
2005-03-11 Jim Weirich <>
* lib/rubygems/gem_commands.rb (Gem::DependencyCommand): Added a
new command "gem dependency" to show the dependencies of an
installed gem.
* lib/rubygems/cmd_manager.rb (Gem::CommandManager::initialize):
Added DependencyCommand to the command manager registrar.
* lib/rubygems/version.rb (Gem::Requirement): Unnested Requirement
from the Version class. There was no benefit to having it nested.
Gem::Version::Requirement is set to point to the new class so to
be compatible with old gems.
* lib/rubygems/installer.rb (Gem::Uninstaller::ask_if_ok): Changed
uninstaller confirm message to read 'Continue with uninstall'.
Its clearer that way.
* lib/rubygems.rb (Gem::Exception::required_location): Switch to
use SourceIndex#find_name rather than search. Made sure a nil
value is returned with a path is not found.
* lib/rubygems/source_index.rb (Gem::SourceIndex::search): Changed
parameter name to gem_pattern to emphasize using Regex in search.
(Gem::SourceIndex::find_name): Added find_name to handle the
common case of searching for an exact match on the short name.
* lib/rubygems.rb (Gem::Exception::activate): Make sure that
activate more closely adheres to honoring the auto_require=>false
(Gem::Exception::report_activate_error): Out of line error
reporting for activate.
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller::find_dependencies_not_installed): Found
another location that was using require_gem with auto_require.
Fixed to use :auto_require=>false.
* lib/rubygems/gem_commands.rb
(Gem::InstallUpdateOptions::add_install_update_options): Added
--ignore-dependencies option. Still needs to be wired to logic.
* lib/rubygems/installer.rb (Gem::Installer::install): Added call
to require_gem_with_options.
* lib/rubygems.rb (Kernel::require_gem_with_options): Added to
allow easier specification of the autorequire flag for
2005-03-10 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::normalize_uri): Normialize a URI to
start with http:// if it does not already.
* test/test_deployment.rb (TestDeployment::xtest_deploy_sources):
Disabled this test. It is part of the new deployment software and
is not working yet.
2005-03-09 Jim Weirich <>
* lib/gemconfigure.rb (Gem::self): Added to aid dynamic
* lib/rubygems/command.rb (Gem::Command::command_manager): Moved
command_manager to base class.
* lib/rubygems/gem_commands.rb (Gem::CleanupCommand::execute):
Both implicit and explicit gems now work with cleanup.
2005-03-08 Jim Weirich <>
* lib/rubygems/installer.rb (Gem::Uninstaller::ok_to_remove):
Fixed source index to be loaded from the installed gems when doing
an "OK TO REMOVE" dependency check.
2005-03-06 Rich Kilmer <>
* lib/rubygems/deployment.rb: beginning of a deployment capability
* test/test_deployment.rb: first tests of new deployment system
2005-03-04 Chad Fowler <>
* lib/rubygems/gem_commands.rb: Small bugfix for the case when you
pass in a gem name (or more) to cleanup for the cleanup command.
2005-03-04 Jim Weirich <>
* lib/rubygems/installer.rb (Gem::Uninstaller::ok_to_remove):
Reworked logic in uninstall to be intelligent about dependencies.
We only complain about dependencies if removing a gem will cause a
dependency error. The uninstaller now checks for :ignore, :all
and :executables options.
* lib/rubygems/cmd_manager.rb (Gem::CommandManager::initialize):
Registered Cleanup command.
* lib/rubygems/gem_commands.rb (Gem::CleanupCommand): Added
Cleanup command to gem.
(Gem::UninstallCommand::initialize): Added --all, --ignore and
--executables options to uninstall. This helps to avoid excessive
YESes all the time.
2005-02-28 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::LocalSourceInfoCache::write_cache): Open cache file in
binary mode.
2005-02-28 Chad Fowler <>
* lib/rubygems/config_file.rb: don't warn about not being able to
find config file.
* lib/rubygems/doc_manager.rb: (for DHH) don't install rdoc docs for
* lib/rubygems/gem_commands.rb: Print which gems are updated on 'gem
update'. If --system is used, report that the rubygems system
software has been updated.
* lib/rubygems/installer.rb: Cleaned up the uninstall has_dependents
logic and output. It was misleading and buggy before.
2005-02-27 Jim Weirich <>
* lib/rubygems/config_file.rb
(Gem::ConfigFile::default_config_file_name): Fixed bug in finding
home directory for the .gemrc file.
2005-02-27 Chad Fowler <>
* Released 0.8.6
* Fixed a small bug with shebang construction
2005-02-26 Jim Weirich <>
* Released 0.8.5
* lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
Removed warning about generating rdocs on gems w/o an rdoc flag.
* lib/rubygems/gem_commands.rb
(Gem::UpdateCommand::do_rubygems_update): Added --system option to
update to specifically update the version of rubygems.
(Gem::UpdateCommand::which_to_update): Fixed some refactoring bugs
in the which_to_update method.
* lib/rubygems/remote_installer.rb
(Gem::LocalSourceInfoCache::read_cache): switched to Marshal
rather than Yaml for local cache.
* bin/gem: Added requirement for Ruby >= 1.8.0.
2005-02-10 Chad Fowler <>
* bin/gem_server: Added Martin Ankerl's wonderful new gem_server
2005-01-27 Chad Fowler <>
* lib/rubygems/gem_commands.rb: Fixed
`gem update` so it accepts a list of gems to update and _only_
updates those.
* lib/rubygems/installer.rb: Fixed a bug in the new shebang code.
* lib/rubygems/remote_installer.rb: Attempt to fix Curt Hibbs'
reported Proxy bug without actually having a proxy to test with.
2005-01-22 Chad Fowler <>
* lib/rubygems/custom_require.rb: Lyle Johnson's fix for Bug #1379
2005-01-20 Chad Fowler <>
* lib/rubygems/validator.rb: Applied Austin Ziegler/Kasper Schiess's
patch to fix unit test running bug.
2005-01-14 Chad Fowler <>
* lib/rubygems/installer.rb: attempt at fixing Ryan Davis's
reported Shebang bug. STILL NOT WORKING, because it doesn't work
with ^M characters.
* lib/rubygems/config_file.rb: small but ugly error fixed if no
config file exists.
* lib/rubygems/remote_installer.rb: Fixed bug
2005-01-01 Chad Fowler <>
* Released 0.8.4
2004-12-31 Jim Weirich <>
* Rakefile: Switch to standard Rake test tasks.
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::read_data): Added a retry to try a
lower case gem name if the open failed. This fixes a problem
where case differences are preventing some gems from installing.
2004-12-29 Jim Weirich <>
* lib/rubygems/gem_commands.rb (Gem::InstallCommand::execute):
Changed the RemoteInstaller to take an options hash rather than
individual options. This will leave the interface more resilient
to changes as more options are added
(e.g. --install_dependencies).
* lib/rubygems/specification.rb (Gem::Specification): Marked array
attributes explicitly. This allows for explicit conversion to
arrays when assigned.
* test/test_specification.rb
(TestSimpleSpecification::test_array_attributes): Added test for
array_attributes forcing values to arrays.
2004-12-28 Jim Weirich <jim@tardis>
* lib/rubygems.rb (Gem::Exception::ensure_gem_subdirectories):
Fixed the Ryan Davis patch to work correctly when directories are
not writable.
2004-12-18 Chad Fowler <>
* lib/rubygems/version.rb: Erik Veenstra's sort patch.
* lib/rubygems.rb: Ryan Davis's installation bug fix.
2004-12-14 Gavin Sinclair <>
* test/test_loadmanager.rb: invalidated it as a unit test; it's
incompatible with custom_require.rb.
2004-12-12 Gavin Sinclair <>
* lib/rubygems/custom_require.rb: simple bug fix.
2004-12-12 Gavin Sinclair <>
* lib/rubygems/custom_require.rb: new file to replace
loadpath_manager.rb and speed up the custom require functionality.
* lib/rubygems/timer.rb: new file; simple benchmarking tool that's
useful at the moment but needn't stay in RubyGems permanently.
* lib/rubygems/source_index.rb: include Enumerable and implement #size
and #length.
* lib/rubygems/specification.rb: removed lazy initialisation of
attributes to reduce #copy_of invocations; folded
Specification.copy_of into Specification#copy_of.
* lib/rubygems.rb: require 'rubygems/custom_require' instead of
'rubygems/loadpath_manager'; removed out of date documentation; added
"require 'rubygems/timer'" to temporarily assist with benchmarks.
2004-12-07 Jim Weirich <>
* Released 0.8.3
2004-12-06 Jim Weirich <>
* test/test_specification.rb
(TestLegacyYamlSpecification::test_load): Fixed test to avoid the
__FILE__ stuff. Running tests from rakefile guarantees that the
file paths start from the right location.
* pkgs/sources/sources.gemspec: Made Gem.sources_spec idempotent.
* lib/rubygems/specification.rb (Gem::Specification::initialize):
Added @@gather to Gem::Specification to facilitate proper loads.
(Gem::Specification::Specification): Added Specification.load.
* lib/rubygems/source_index.rb (Gem::SourceIndex): Fixed comments
'long name' => 'full name'.
* lib/rubygems/gem_commands.rb (Gem::BuildCommand::load_gemspecs):
Changed to use Gem.Specification.load.
* Rakefile: Added sources-*.gem to clobber list.
(egrep): Upgraded the DBG finder to include breakpoint.
* post-install.rb (install_sources): Using block version of chdir.
* lib/rubygems/remote_installer.rb
(Gem::LocalSourceInfoCache::read_cache): Fixed initialization of
* lib/rubygems.rb: Updated version to 0.8.2.
2004-12-04 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::LocalSourceInfoCache::writable_file): Now just returns the
selected cache file (which was selected based on writability).
(Gem::LocalSourceInfoCache::try_file): Added try_file to determine
if a file is a candidate for a cache file.
(Gem::LocalSourceInfoCache::select_cache_file): Added failure if
there are not valid cache file candidates.
* lib/rubygems.rb (Gem::Exception): Renamed @@cache to
(Gem::Exception::source_index): Renamed Gem.cache to
Gem.source_index (but left cache as an alias).
2004-12-03 Jim Weirich <>
* lib/rubygems/remote_installer.rb (Gem::LocalSourceInfoCache):
Added a local cache manager object to implement the read/write
policies on the system and user cache files.
(Gem::LocalSourceInfoCache::update): Added update and flush to the
caching fetcher so that it knows when it needs to update the local
cache files.
(Gem::RemoteInstaller::initialize): Switched to using a cached
fetcher in the remote installer. All the caching logic was
removed from the installer. User writable cache files are now
(Gem::RemoteInstaller::write_gem_to_file): write_gem_to_file now
will create the path if needed.
2004-12-02 Jim Weirich <>
* lib/rubygems/package.rb (TarInput::zipped_stream): To workaround
a problem with earlier than 1.2.1, we read the zipped data into a
string, and then return an IO object on that string.
(TarInput::each): Refactored getting a stream to the zipped data
into <tt>zipped_stream</tt>.
2004-12-01 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::convert_spec): We now proprocess the
yaml string data to reduce it in size. This was done to
workaround a problem with large YAML files (although it is just a
temporary fix because our yaml data keeps growing and growing).
* Rakefile: Added more targets to the clobber target.
* test/test_remote_fetcher.rb
(TestRemoteFetcher::test_explicit_proxy): Added tests for proxy
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::connect_to): Refactored to add proxy
2004-11-28 Chad Fowler <>
* lib/rubygems/loadpath_manager.rb: Added Mauricio's patch to work
around string contains null byte issue.
2004-11-27 Jim Weirich <>
* lib/rubygems/remote_installer.rb
(Gem::RemoteSourceFetcher::get_size): Switched from open-uri with
early abort to an HTTP.head call to get the size of the yaml file
on the server.
2004-11-26 Jim Weirich <>
* test/test_specification.rb
(TestDefaultSpecification::test_defaults): Added test for some
basic defaults in a gem spec.
* test/test_remote_installer.rb (MockFetcher::source_info): Made
the fake test data more realistic.
(TestRemoteInstaller::test_source_info): Improved tests.
2004-11-26 Jim Weirich <jim@tardis>
* test/test_remote_installer.rb (MockFetcher): Added MockFetcher
to make testing the remote installer easier. Currently there are
two remote installer test classes. Eventually TestRemoteInstaller
will succeed RemoteInstallerTest, which is very incomplete.
* test/test_package.rb (TC_TarReader::TC_TarInput): Made the unit
test ignore the setgid bit. The setgid bit doesn't work on my
laptop for some reason. This may be a problem with my laptop
rather than with this code. Should investigate further.
* lib/rubygems/remote_installer.rb (Gem::RemoteSourceFetcher):
Added a Fetcher object to the remote installer to handle all the
details of getting the remote information. This allows testing
the logic of the remote installer without actually doing remote
(Gem::RemoteInstaller::sources): Renamed get_caches to
source_info. The problem is that cache is too generic and there
are actually several things that we will cache in the system.
* lib/rubygems/cache.rb (Gem::Cache::self): Changed interface to
from_installed_gems slightly.
(Gem::Cache::self): Reordered rescue clauses so that the syntax
exception might actually be handled.
* lib/rubygems.rb (Gem::Exception::ensure_gem_subdirectories):
Dumped the check_gem_subdirectories method to use the almost
identical ensure_gem_subdirectories method.
(Gem::Exception::ensure_gem_subdirectories): Only attempt to
create the gem subdirectories if we can actually write them.
* bin/gem_server: Added date of last file modification to header
of /yaml. This is in preparation for using a head command with
date/time stamping in fetching the source cache.
2004-11-25 Ryan Davis <>
* lib/rubygems.rb: Added GEM_SKIP functionality, which will tell
loadpath_manager not to load specific libs from gems. For
testing/ development purposes. Created by Ryan Davis.
2004-11-24 Chad Fowler <>
* lib/rubygems/specification.rb: Allow multiple authors per gem.
* lib/rubygems/gem_commands.rb: command line error message if you
run 'gem install' with no args.
* lib/rubygems/loadpath_manager.rb: Fixed @specs bug as reported by
Lothar Schulz on ruby-talk.
2004-11-07 Chad Fowler <>
* lib/rubygems.rb,lib/rubygems/installer.rb,lib/rubygems/cache.rb
Fixes to make non-root installation work properly. Still need to
fix uninstallation.
* lib/rubygems/gem_commands.rb: Allow multiple gems/gem names on the
command line for install.
2004-10-31 Chad Fowler <>
* lib/rubygems/version.rb,test/test_version_comparison.rb: Patrick May's
* post-install.rb: Patrick May's fix for rubygems lib not being found
during install.
2004-10-29 Chad Fowler <>
* packages/,pkgs,install.rb: renamed "packages" to "pkgs" to avoid
* remote_installer.rb: Added user-agent reporting for remote
* setup.rb,install.rb,bin/update_rubygems: removed install.rb and
added setup.rb and post-install.rb. Changed update_rubygems so that
params passed to it can be passed on to setup.rb
2004-10-25 Jim Weirich <>
* lib/rubygems/installer.rb
(Gem::Uninstaller::remove_executables): Corrected spelling of
2004-10-24 Jim Weirich <>
* lib/rubygems/version.rb (Gem::Version::Requirement::self): Now
properly handles arrays of version constraints.
* lib/rubygems/loadpath_manager.rb
(Gem::LoadPathManager::Gem::Specification): Added comments
describing the fast Spec class purpose. Added to_s to
Gem::Specification (both fast and slow versions).
(Gem::LoadPathManager.paths): Returns (cached) list of gem paths.
(Gem::LoadPathManager::self): Refactored to use glob_over in
search_loadpaths and search_gempaths.
* lib/rubygems/installer.rb: Added some requires.
* lib/rubygems/cache.rb (Gem::Cache::refresh): Fixed refresh! to
call load_specification on the Cache class, not on itself.
* lib/rubygems.rb (Gem::Exception::activate): added comments to
activate. Also made sure that partial name matches in the gem
cache search were avoided.
(Gem::Exception::clear_paths): Added code to clear the gem cache
when reseting the gem paths.
(Gem::Exception::require): Added a function to take a gem name and
a library file name (in that gem) and return a path to the library
in the gem. David HH was interested in this in order to speed up
some require statements under ModRuby. Eventually I hope we won't
need these special tricks.
(Gem::Exception::latest_partials): Fixed bug that assumed exactly
three digits in a version number.
* Rakefile (egrep): Added two tasks to find all the FIXME/TODO
markers in the source code comments and to find the DBG print
2004-10-23 Jim Weirich <>
* test/test_specification.rb
Verify that an executable doesn't need the bindir if bindir is
(TestSimpleSpecification::test_no_bindir_in_list_of_files): Added
test the verify that exectuable can be written without a default
* lib/rubygems/installer.rb
(Gem::Installer::generate_bin_scripts): Added check so that the
bindir is access only when there are actually executables to
install. Checking for an installable bindir was giving permission
errors when installing test gems.
2004-10-21 Chad Fowler <>
* lib/rubygems/installer.rb: Show extension build errors during install
in addition to logging them to gem_make.out
2004-10-02 Chad Fowler <>
* lib/rubygems/validator.rb,lib/rubygems/gem_commands.rb: Added
--test option for "gem check" that runs unit tests on already-
installed gems.
2004-09-30 Rich Kilmer <>
* lib/rubygems/specification.rb - externalized the loaded_from runtime
var on specification
* lib/rubygems/cache.rb - optimized cache refresh! method and refactored
processing of files when building cache.
* lib/rubygems/loadpath_manager.rb - fixed bug in loadpath manager in
finding native extensions that have ext on os x, win32 and solaris
2004-09-20 Chad Fowler <>
* lib/rubygems/gem_commands.rb: If file match during local install is
a directory, don't try to treat it erroneously as a gem (bug reported
by Rich).
* lib/rubygems.rb: Fixed small bug in #latest_load_paths
(NOTE: It looks like 0.8.0/0.8.1 was released in this timeframe)
2004-09-14 Chad Fowler <>
* lib/rubygems.rb: Fixed bug in require_gem (thanks Jamis Buck!)
that would require a gem based on an inexact search of its name
in the local cache. This caused copland-webrick to be loaded
when a request was made for "copland".
2004-09-12 Chad Fowler <>
* lib/rubygems/specification.rb, test/test_specification.rb: Removed
library_stubs attribute.
2004-09-12 Gavin Sinclair <>
* scripts/specdoc.rb: Check that all attributes are documented; and
improved formatting.
* scripts/specdoc.yaml: test_suite_file -> test_files; finished
* scripts/ misc changes.
2004-09-11 Chad Fowler <>
* test/test_parse_commands.rb: Fix failing unit tests due to Rich's fix from
* lib/rubygems/specification.rb: Add bindir to executable path on file list
2004-09-11 Rich Kilmer <>
* lib/rubygems/gem_commands.rb - got rid of stub options
* lib/rubygems/install.rb - changed output of messages so the UI would format
* bin/gem_server - exit! from ^c
2004-09-09 Chad Fowler <>
* lib/rubygems/loadpath_manager.rb: Small bug when gem specs have ruby
version requirements.
* lib/rubygems/specification.rb, lib/rubygems/gem_commands.rb: Fixed failing
functional test.
2004-09-08 Chad Fowler <>
* install.rb: added stub removal to the install process
2004-09-06 Chad Fowler <>
* test/test_package.rb: Fixed failing unit test as per Mauricio's email to
the rubygems list.
* Fixed minor issues with Windows cmd file generation.
2004-09-06 Rich Kilmer <>
* lib/rubygems/remote_installer.rb - enabled caching of source caches
based on the size of the yaml.Z/yaml file.
2004-08-29 Chad Fowler <>
* /lib/rubygems/gem_command.rb: small big fix for local gem installs
on Windows.
2004-08-28 Rich Kilmer <>
* /lib/rubygems/installer.rb, /lib/rubygems/doc_manager.rb,
/lib/rubygems/cmd_manager.rb - Added an exception: FilePermissionError
which checks to ensure write access to the install/uninstall/rdoc
destination directories and raises a nice error instead of the standard
2004-08-28 Rich Kilmer <>
* /lib/rubygems/installer.rb - commented out stub addition and removal
2004-08-28 Rich Kilmer <>
* /lib/rubygems.rb, /lib/rubygems/loadpath_manager.rb -
this adds all the loadpath_manager stuff with the 'ultimate require hack' to
rubygems.rb. Also, require_gem methods body has been extracted into a method
Gem.activate that differs in the calling signature in that the second param is
a boolean that determines whether to autorequire or not.
2004-08-27 Rich Kilmer <>
* lib/rubygems/user_interaction - added ask_yes_no as a method
which returns true/false and formats/processes the [yn] stuff.
it also has an optional second parameter of true/false for the
default value.
* lib/rubygems/installer.rb, lib/rubygems/remote_installer.rb,
lib/rubygems/command_manager.rb - changed all places where ask
was used with [Yn] to ask_yes_no
2004-08-24 Gavin Sinclair <>
* lib/rubygems/installer.rb: Library stubs are now installed as per
'library_stubs' gemspec attribute. A stub is (still) also installed
for the 'autorequire' attribute. All library stub handling
refactored into two new classes: LibraryStubs and LibraryStub.
* test/test_parse_commands.rb: as per 2004-08-17 below, the 'update'
command takes --rdoc as its default now.
2004-08-22 Rich Kilmer <>
* lib/rubygems/installer.rb: fixed stub generation...i added the version
stuff that only app stubs should have...sorry!
2004-08-17 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb: --rdoc is default on 'update' command,
consistent with 'install'. 'default_str' methods changed to reflect
--rdoc being default now.
2004-08-21 Chad Fowler <>
* lib/rubygems/gem_commands.rb: Proper checking for gems in local
directory on local install. rescue Gem::LoadError to avoid ugly
* lib/rubygems/installer.rb: created Gem::LoadError to hold extra
metadata. Setting up for proper dependency installation on local
2004-08-20 Chad Fowler <>
* lib/rubygems/specification.rb: Fixed small bug in the previous spec
change commit.
* lib/rubygems/cache.rb: Prevent catastrophic failure if a gemspec is
* lib/rubygems/installer.rb: Fixed (in not a great way) a bug that would
cause a zero-length spec file to be written to the gem specifications
2004-08-19 Chad Fowler <>
* lib/rubygems/specification.rb: #files auto-includes any #extensions,
#extra_rdoc_files, #test_files, etc. that weren't explicitly added
to the file list.
2004-08-18 Chad Fowler <>
* lib/rubygems/specification.rb: One more bug with #test_files.
Default value of [] wasn't set, resulting in an attempt to call
#empty? on nil.
* lib/rubygems/gem_commands.rb: Unit tests appear to be working now.
Still more testing to do.
* lib/rubygems/remote_installer.rb, lib/rubygems/installer.rb: Fixed
minor bugs in default selections for questions asked during
installation and uninstallation
2004-08-17 Gavin Sinclair <>
* lib/rubygems/specification.rb:
- #test_suite_file and #test_files now work on older gems.
- Added Specification.from_yaml for loading YAML gemspecs
- #to_ruby doesn't emit 'specification_version'
* lib/rubygems/gem_commands.rb: Updated test-on-install code to use
Specification#test_files instead of #unit_test_suite.
* lib/rubygems/old_format.rb: Use Specification.from_yaml
* lib/rubygems/package.rb: Ditto
2004-08-17 Gavin Sinclair <>
* lib/rubygems/command.rb: --debug option to turn on $DEBUG
* lib/rubygems/config_file.rb: ditto
2004-08-11 Rich Kilmer <>
* lib/rubygems/installer.rb: The application stub now defaults to
the latest version of the library, and optionally allows an initial
parameter conforming to _VERSION_ to be passed to select a prior
version of the library (this initial parameter, if present, is shifted
off of ARGV). This change was re-added...I erased it somehow :(
2004-08-11 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb:
- 'gem spec X' displays spec for _latest_ version of X. Added
'--all' option if you want to see all versions.
- RDocCommand code cleanup and slight change: document _all_
versions of the gem by default, not just the first.
* lib/rubygems/doc_manager.rb: removed 'kilmer' default template
option and obsolete error message.
2004-08-12 Chad Fowler <>
* Added "gem rdoc" command for generating docs for already-installed
2004-08-11 Rich Kilmer <>
* bin/generate_yaml_index: updated to work with new gem format (and use the Gem::Format
class to read). Will deploy after testing on RubyForge.
* lib/rubygems/gem_commands.rb: generate rdoc by default on installs (I think this is
just good practice.
* lib/rubygems/remote_install.rb: raise an exception if dependent gems cannot be found
on remote_install
2004-08-11 Chad Fowler <>
* lib/rubygems/gem_commands.rb: query is now case insensitive (as it used to be)
* lib/rubygems/installer.rb: gem_make.out wasn't being written when an extension failed to compile.
2004-08-11 Rich Kilmer <>
* removed String.to_requirement...we should not modify
base classes in Ruby! modified to get rid of said to_requirement
with Gem::Version::Requirement.create(obj)
* specification.rb - fixed constructor bug of version requirement...
it now defaults to Requirement.default
2004-08-11 Chad Fowler <>
* One more specification.rb bug fixed.
2004-08-11 Gavin Sinclair <>
* lib/rubygems/specification.rb:
- Added convenience class methods: attribute_names,
attribute_defaults, default_value, required_attributes, and
- IMPORTANT: attribute readers now use lazy initialization, just
like some of them did before the 2004-08-01 change. This was done
to fix the breakage when loading older gemspecs.
- IMPORTANT: replaced instance variable access with attribute reader
method calls in many cases. This is in line with the above change.
- Good documentation for the "attribute" method.
- Renamed _copy -> _copy_of.
* lib/rubygems/cache.rb:
- Some fairly shallow changes. Exception handling needs improvement.
* lib/rubygems/version.rb:
- (Version.create) new method (for convenience)
- (Version::Requirement.create) new method (for convenience)
- (Version::Requirement.default) new method (for consistency)
* test/test_specification.rb: test attribute_names instead of
attributes. Other "class convenience" methods remain to be tested
at this stage. Also added test classes for legacy gemspecs.
* test/data/legacy/keyedlist-0.4.0.ruby: added.
* test/data/legacy/keyedlist-0.4.0.yaml: added.
2004-08-06 Gavin Sinclair <>
* lib/rubygems/specification.rb:
- Added convenience class methods: attribute_names,
attribute_defaults, default_value, required_attributes, and
- IMPORTANT: attribute readers now use lazy initialization, just
like some of them did before the 2004-08-01 change. This was done
to fix the breakage when loading older gemspecs.
- Good documentation for the "attribute" method.
- Renamed _copy -> _copy_of.
* test/test_specification.rb: test attribute_names instead of
attributes. Other "class convenience" methods remain to be tested
at this stage.
2004-08-01 Gavin Sinclair <>
* lib/rubygems/specification.rb:
- (Re)defined class methods: attribute, attributes,
required_attribute, read_only, overwrite_accessor. @@attributes
contains a list of attribute names and default values. This
allows higher-level specification of gemspec attributes, and the
handling of them in a DRY fashion.
- to_yaml_properties now includes all properties, to ensure
correct deserialization of a Gem::Specification object.
- #to_ruby and #to_yaml_properties rewritten to use @@attributes
- Introduced 'specification_version' attribute and three constants:
SPECIFICATION_VERSION_HISTORY. This allows us to track changes to
the spec format.
- Refactored several "helper" methods, using the new class method
'attribute_alias_singular', which provides a "singular" alias for
a "plural" attribute (e.g. require_path and require_paths).
- All gemspec attributes now defined in a uniform fashion, which
implies that they all have valid instance variables on
initialization. Previously, some attributes were lazily
- Introduced attribute 'library_stubs', to allow the specification
of several stub files. (That feature not implemented, though.)
- Introduced attribute 'test_files' and deprecated 'test_suite_file'.
- Provided #warn_deprecated stub of a method, but don't know what to
do with it.
- Deprecated #has_test_suite? in favour of (new) #has_unit_tests?
- Used overwrite_accessor to provide special behaviour for the
setting of some attributes.
- The 'date' attribute is now a Date object. We don't need high
resolution, and Time objects, being system-dependent, are not nice
to deal with.
- Various code style changes.
- Summary: uniform treatment of gemspec attributes; reduced code by
refactoring; 'test_suite_file' deprecated for 'test_files';
'library_stubs' introduced; spec versioning introduced.
* lib/rubygems/version.rb: (Dependency) added #to_s, #==, and an
alias (requirements_list -> requirement_list).
* test/test_specification.rb: several new tests: _singular_attributes,
_deprecated_attributes, _defaults, _to_{yaml,ruby}_and_back,
_directly_setting_dependencies_doesnt_work, and more. Plus a new
class to give Specification a more thorough workout (TestSpecificationComplex).
* scripts/runtest.rb: require 'pp' so it's always available in unit
2004-07-30 Rich Kilmer <>
* lib/rubygems/installer.rb The application stub now defaults
to the latest version of the library, and optionally allows
an initial parameter conforming to _VERSION_ to be passed
to select a prior version of the library (this initial
parameter, if present, is shifted off of ARGV).
* lib/rubygems/version.rb correct? is now a class method on
Version enabling Gem::Version.correct?(...)
* lib/rubygems/install.rb make it so uninstalling a gem will
not remove executables if another version of that gem is
installed and needs those executables
2004-07-26 Jim Weirich <jim@tardis>
* lib/rubygems.rb (Gem::Exception::latest_load_paths): Added
latest_load_paths and refactored all_load_paths to use common
2004-07-25 Rich Kilmer <>
* fixed bug in using --source in command.rb (removed short -s version)
* changed spec to use the RUBY_PLATFORM for Platform::CURRENT
* added ability to choose from list of available gems on remote install
if (1) some of the gems are binary and (2) there are move than one.
If the gems are all source gems, the latest is selected.
2004-07-25 Jim Weirich <>
* lib/rubygems.rb (Gem::Exception::all_load_paths): Added
all_load_paths utility function.
* bin/update_rubygems: Added a command to update the gem
installation based on a update gem.
* Rakefile: Pulled package file list out into a constant so it can
be reused between the package command and the gem package command.
Added a gem package target to support rubygems updates.
2004-07-22 Gavin Sinclair <>
* lib/rubygems/version.rb:
* (Requirement#initialize) initialize @version to avoid warning
* (Dependency#initialize) initialize @version_requirement to avoid
2004-07-19 Chad Fowler <>
* install.rb: Shebang line should point to the ruby version used during
2004-07-19 Assaph Mehr <>
* lib/rubygems/command.rb, packages/sources/lib/sources.rb: Added
command-line-configurable sources.
2004-07-18 Chad Fowler <>
* lib/rubygems/validator.rb: Fixed a bug that would cause "managed"
files to appear to be unmanaged due to differences in how the paths
were formatted.
2004-07-17 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb (InstallCommand#execute): removed clear
bug (name ->
2004-07-14 Rich Kilmer <>
* added old_format.rb which is used in the (hack) in format.rb
to detect the older version of a gem, and if present, switches
to that class instead.
* fixed the ARGV passing in bin/gem to ingore args past -- which
are used for passing params to source gems (extconf.rb)
2004-07-13 Chad Fowler <>
* lib/rubygems/installer.rb, lib/rubygems/package.rb,
lib/rubygems/format.rb, test/test_package.rb: Added Mauricio
Fernandez's patch to replace old gem format with tar.gz format.
Fixed some failing unit tests that resulted. Still a couple left.
* lib/rubygems.rb: Fixed a bug introduced by the previous patch.
2004-07-13 Gavin Sinclair <>
* lib/rubygems.rb: (#require_gem) added the ability to do
"require_gem 'rake/packagetask'", for instance, which is a
shortcut for "require_gem 'rake'; require 'rake/packagetask'".
2004-07-13 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb: refactored --version option
in all cases to the new VersionOption module.
2004-07-13 Gavin Sinclair <>
* lib/rubygems/cmd_manager.rb: added 'unpack' command.
* lib/rubygems/gem_commands.rb (UnpackCommand): added.
* lib/rubygems/installer.rb (Installer#unpack): added.
2004-07-09 Jim Weirich <>
* lib/rubygems/user_interaction.rb (Gem::StreamUI::ask and
Gem::StreamUI::choose_from_list): Added flush before each gets.
2004-07-05 Gavin Sinclair <>
* lib/rubygems/command.rb (Gem::Command#defaults_str): added.
* lib/rubygems/command.rb (Gem::Command#create_option_parser):
Defaults for the options are included in the parser output.
* lib/rubygems/gem_commands.rb: all commands which have options
and defaults now have #defaults_str implemented.
2004-07-05 Jim Weirich <>
* lib/rubygems/command.rb (Gem::Command#create_option_parser):
Make the argument and option sections optional. They are only
printed if there are options or arguments defined.
2004-07-05 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb:
- scrubbed up the 'help' command a bit, removing its options
- added information to 'help commands'
2004-07-04 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb:
- modified generic help and examples
- improved 'list' and 'search' help, and fixed bug in 'search'
* lib/rubygems/cmd_manager.rb:
- explicit support for top-level commands --help and --version
- no more support for --examples and --commands
2004-07-04 Gavin Sinclair <>
* lib/rubygems/gem_commands.rb:
- added 'list' and 'search' commands ('list' is no longer an alias
for 'query')
- modified return value from all 'arguments' methods (see command.rb)
* lib/rubygems/cmd_manager.rb: added 'search' command.
* lib/rubygems/command.rb:
(Command#create_option_parser): enhanced the option parser for 'help'
(Command#remove_option): added (to support 'list' and 'search')
* Rakefile: added 'gem' target. Runs "local" (not installed) command
and libraries.
2004-07-04 Gavin Sinclair <>
* Rakefile: added 'install' target.
* lib/rubygems/cmd_manager.rb: code formatting.
* lib/rubygems/gem_commands.rb:
- refactored common install and update options into new module
. consolidated option pairs (e.g. --test & --no-test ==> --[no-]test)
. --gen-rdoc is now --rdoc
- (UninstallCommand) corrected typo
- (InstallCommand) corrected output with local install
* test/test_parse_commands.rb: :%s/--gen-rdoc/--rdoc/g
2004-07-03 Jim Weirich <>
* lib/rubygems/gem_commands.rb (Gem::InstallCommand::initialize):
Added --no-gen-rdoc and --no-test to allow the user to override
.gemrc default options.
* lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
Concatenate the local rdoc options to the end of the spec's rdoc
(Gem::DocManager::configured_args): Added configured_args as a
place to store local rdoc options.
* lib/rubygems/gem_runner.rb (Gem::GemRunner::do_configuration):
Configuration handled in do_configuration now.
(Gem::GemRunner::do_configuration): Set the local rdoc
configuration from the config file.
* lib/rubygems/command.rb (Gem::Command::handles): Added a
handles? method to Command so that we can detect which extra
arguments can be used with a command.
(Gem::Command::add_extra_args): New method to add the config
file's extra arguments to the front of the argument list.
(Gem::Command::extra_args): Added extra_args to Command class to
hold the extra args discovered in the config file.
* Rakefile: Added TEST=filename option to all the test targets.
* test/functional.rb (FunctionalTest::test_gemrc): Added
functional test for gemrc.
* scripts/ Added an example to the specification command.
* lib/rubygems.rb (Gem::Exception::manage_gems): Added gem_runner
and config_file to manage_gems.
(Gem::Exception::use_paths): use_paths now accepts (and ignores)
nil parameters.
* bin/gem: Make Gem::GemRunner the top level object. It now
creates and calls the CommandManager /after/ the arguments are
* Rakefile: Added test/data/gemhome to clobber list.
2004-07-01 Jim Weirich <>
* test/test_specification.rb
(TestSpecification::test_rdoc_files_included): Test for rdoc files
included in file list. Test for redundent file removal.
* lib/rubygems/specification.rb (Gem::Specification::validate):
Added gem version to validation requirement. Added normalize to
remove redundent files in lists.
* lib/rubygems/gem_commands.rb (Gem::InfoCommand::usage): Added
usage and arguments methods for InfoCommand.
(Gem::SpecificationCommand::usage): Fixed several usage comments.
2004-06-30 Jim Weirich <>
* lib/rubygems/gem_commands.rb (Gem::InstallCommand::usage):
Upcased the comment on the usage statement (and corresponding
option). This makes the variable part of the command
(e.g. GEMNAME) stand out from the static parts.
* lib/rubygems/cmd_manager.rb (Gem::CommandManager::process_args):
Downcased commands before searching (allows upper case or mixed
case for commands on command line).
* install.rb (install_rb): Fixed bug where the installer falsely
triggered the old repository upgrade when the directory part of
the file contained the matching "-digits." pattern. Now the
pattern must be in the file's base name.
2004-06-26 Gavin Sinclair <>
* scripts/specdoc.rb: added (to generate gem specificiation document)
* scripts/ added (supports specdoc.rb)
* scripts/specdoc.yaml: added (supports specdoc.rb)
2004-06-27 Jim Weirich <>
* scripts/ Removed extraneous <em> marker.
* lib/rubygems/specification.rb
(Gem::Specification::satisfies_requirement): HA! Caught another
version_requirement vs version_requirements error. (I really
regret the decision to change that name.)
* lib/rubygems/installer.rb (Gem::Uninstaller::has_dependents):
Changed call to alert to alert_warning.
* lib/rubygems/gem_commands.rb (Gem::UninstallCommand::execute):
Again, remove local error handling to allow the error to perculate
up the chain to the top level.
* lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
Removed one level of exception handling. Only catching RDocErrors
at the outermost level. And instead of reporting the error and
swallowing it, I convert it to a Gem::DocumentError (with the same
error message). This is for better error handling.
* lib/rubygems/command.rb (Gem::Command::handle_options): Removed
exception handling from handle_options. This allows errors to be
handled at the top level. Makes for a more consistent error
* lib/rubygems/doc_manager.rb (Gem::DocumentError): Added
DocumentError to wrap RDocErrors (which derive from Exception
... yuck).
* lib/rubygems/cmd_manager.rb (Gem::RemoteError): RemoteError and
LocalInstallationError are now Gem::Exceptions (rather than
* lib/rubygems.rb (Gem::Exception): Changed base of Gem::Exception
to RuntimeError (was ::Exception). Apps using gem as a library
would have to catch Gem::Exceptions explicitly (yuck), or catch
Exceptions generically. Catching Exceptions will catch
EVERYTHING, including things like SystemExit. By makeing
Gem::Exception a RuntimeError, apps can catch RuntimeError or even
2004-06-26 Jim Weirich <>
* test/functional.rb (FunctionalTest::test_all_command_helps):
Added functional test to show all commands have usage messaegs.
* lib/rubygems/gem_commands.rb (Gem::HelpCommand::execute): Added
version option to help (gem help version).
(Gem): Cleaned up the help text. Dropped unneeded verbage.
* lib/rubygems/cmd_manager.rb
(Gem::CommandManager::find_command_possibilities): Added
find_command_possibilities to help the Help command look for
* lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): Fixed
null pointer bug where a list was destroyed in a method.
* lib/rubygems/gem_commands.rb (Gem::BuildCommand::load_gemspecs):
yaml gemspec files are now accepted by the build command.
* lib/rubygems/command.rb (Gem::Command::parser): Created an
on-demand option parser for all commands.
(Gem::Command::handle_options): Command line option hash is now
and instance variable with a reader.
* Rakefile: Linked package version to the value in the rubygems.rb
file. The gem env command now shows both gem version (e.g. 0.6)
and the package version (e.g. 0.6.1).
2004-06-25 Jim Weirich <>
* lib/rubygems/gem_commands.rb (Gem::InfoCommand): Dropped the
version command (its available via gem env). Added a gem info
command to extract the yaml from a gemfile.
(Gem::LocalRemoteOptions): Refactored the local/remote options
(adding and testing) into a mixin module.
* test/test_version_comparison.rb
(TestDependencies::test_normalization): Added some tests for the
normalization issues mentions below.
* lib/rubygems/version.rb (Gem::Dependency::normalize): Old gems
have requirements and dependencies incoded in the Yaml spec in an
out of date format. When loaded, they have incorrect instance
variables for modern objects. I added a normalize call to handle
transforming out dated objects in to modern objects. (Remember
this next time we change the data structure of something in the
spec file.)
(Gem::Version::Requirement::parse): Requirements are comparable
now, just so that we can test them with asserts.
* lib/rubygems/remote_installer.rb
(Gem::RemoteInstaller::find_dependencies_not_installed): Fixed
recursive call to require_gem to properly pass dependency
* lib/rubygems/installer.rb (Gem::Uninstaller::has_dependents):
Fixed reference to version_requirement (needs to be plural).
* lib/rubygems/command.rb (Gem::Command::invoke): Command now
handles it own help messages. Commands no longer have to return
true/false to trigger help messages.
* lib/rubygems/cmd_manager.rb (Gem::CommandManager::process_args):
Moved help handling into the help command.
* lib/rubygems/gem_commands.rb (Gem::HelpCommand): Renamed the
base command to HelpCommand and made it handle a lot of the help
options. Still need work on individual command helps.
* test/functional.rb (FunctionalTest::test_env_version): Added a
bunch of new functional tests for the environment command.
* lib/rubygems/gem_commands.rb (Gem::InstallCommand::execute):
Made multiple gem names an error for now. Should look at later.
* lib/rubygems/cmd_manager.rb (Gem::ListCommand): Added list as an
alias to query.
(Gem::UpdateCommand::initialize): Corrected spelling of install
(intall) in several places.
* bin/gem_server: Added Gem.manage_gems to the gem_server to fix
missing requirements.
* lib/rubygems/cmd_manager.rb (Gem::InstallCommand::initialize):
Added missing --both option to install.
* test/test_command.rb
(TestCommand::test_invode_with_bad_options): Catch the termination
* test/mockgemui.rb (MockGemUi::terminate_interaction): Make the
mock UI throw an exception when a termination is requested. This
makes sure that we don't miss accidental terminations.
* lib/rubygems/cmd_manager.rb (Gem::CommandManager::find_command):
Added find_command to handle best matching command names.
* test/functional.rb (FunctionalTest::test_build): Updated
functional tests to use the new command structure.
* lib/rubygems/version.rb (Gem::Version::Requirement): Changed the
pessimistic version comparison operator to "~>". I like to think
of it as "approximately greater than". (It was ">*").
* bin/gem: Moved gem2 into the standard gem script location. It
is now stable enough to use as the standard command.
* lib/rubygems/cmd_manager.rb (Gem::CommandManager::run): Added
run method to trap errors while running commands. Makes for
prettier output.
(Gem::CommandManager): Move *all* commands to their own classes.
Simplified CommandManager. Lowered the coupling between
CommandManager and the Commands (the commands don't even need to
know about the manager anymore). CommandManager maybe created
with "new" for testing (the script will continue to use
(Gem::RubyGemsInfoCommand): New command.
(Gem::VersionCommand): New command.
2004-06-24 Jim Weirich <>
* lib/rubygems/user_interaction.rb (Gem::UserInteraction):
Significantly rewrote the whole user interaction scheme. We are
now using an UI object that responds to the standard list of UI
commands (e.g. say, alert, ask). The UserInteraction module
defines all the interaction methods to be forwarded to the default
UI objects. The "ui" method returns that default object (and you
can use self.ui=(new_ui) to change it). Also the use_ui(new_ui) {
} command is convienent for switching the UI object for a short
period of time.
2004-06-18 Rich Kilmer <>
* broke test_cmd_manager.rb into test_parse_commands and
test_process_commands to test the parsing of command line options
and the funtionality, respectively.
2004-06-18 Rich Kilmer <>
* added new unit test file: test/test_cmd_manager.rb to test the
command manager classes. this is just the first few tests which
will be expanded to a full test suite.
2004-06-17 Chad FOwler <>
* lib/rubygems/installer.rb: Fixed bug in windows batch file generation
which was causing file not found errors.
* lib/rubygems/installer.rb: Uninstall now removes scripts and batch
* lib/rubygems/specification.rb: Fixed install bug. Thanks to Mark
Sparshatt for the fix (via the rubyforge bug tracker).
2004-06-17 Jim Weirich <>
* lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
Changed rdoc generation to do a chdir into the base source
directory and then to use a relative path for all the source
files. This makes the generated RDOC html look better and may fix
the windows drive/rdoc bug as a side effect.
2004-06-17 Rich Kilmer <>
* Added ability to capture the UserInteraction with:
c = Gem::UserInteraction.capture
and then you can override specific methods like 'say':
c.on_say {|statement| puts "you said: #{statement}"}
2004-06-15 Rich Kilmer <>
* Added refactored command handling in rubygems/cmd_manager.rb and a
(temporary) bin/gem2 command file to test things out. Once we feel
comfortable, we can replace gem with gem2.
2004-06-10 Rich Kilmer <>
* Isolated all user interaction to pass through module methods on a new
Gem::UserInteraction module. Those methods will be the method of abstracting
the interaction of RubyGems for use in a GUI-based solution.
2004-06-10 Rich Kilmer <>
* require 'rubygems' now minimally requires only the files needed
for runtime access to gems...not management of gems. To manage
gems you now additionally need to execute Gem::manage_gems prior
to using the builder/installer/etc. This makes gemspecs not
backward compatible unless they add that line to the gemspec
after the require 'rubygems' line.
2004-06-10 Gavin Sinclair <>
* bin/gem: --upgrade-all was broken, probably as a result of the
search changes listed below.
2004-06-09 Chad Fowler <>
* lib/rubygems/remote_install.rb: delegate search functionality to
Cache class, bringing remote and local search and list together into
one piece of code.
* bin/gem, lib/rubygems/validator.rb: move all STDIO work to bin/gem.
Validator.alien now returns a hash of ErrorData objects.
* bin/gem, lib/rubygems/installer.rb: move most of the STDIO stuff to
bin/gem, communicating via exceptions in this case.
2004-06-08 Rich Kilmer <>
* Fixed the drive problem on win32 (hopefully) so multiple drives
should now work. Its still a hack until rdoc is fixed.
2004-06-08 Chad Fowler <>
* Fixed bug caused by method change on Version::Requirement
2004-06-08 Rich Kilmer <>
* fixed bug in doc_manager.rb whereby the extra_rdoc_files should
be appended to the list of directories prior to prepending the
full path.
2004-06-08 Gavin Sinclair <>
* bin/gem_server: List installed gems in [name,version] order.
2004-06-08 Gavin Sinclair <>
* lib/rubygems/installer.rb: don't warn about not being able to
install a library stub if a library stub is already installed.
Still warn if it's not a library stub that's there already.
2004-06-08 Gavin Sinclair <>
* bin/gem: renamed --upgrade-dist to --upgrade--all and fixed bug.
* lib/rubygems/installer.rb: fixed bug with Ruby version assertion.
2004-06-07 Chad Fowler <>
* lib/rubygems/remote_installer.rb, lib/rubygems/version.rb: Fixed old
dependency on #version method for Gem::Version::Requirement
* bin/gem: new --upgrade-dist option allows one to upgrade every
installed gem
* lib/rubygems/specification.rb,lib/rubygems/installer.rb: new
#required_ruby_version attribute added to gem specification for specifying a
dependency on which version of ruby the gem needs. Format it accepts is
the same as the Gem::Version::Requirement format.
2004-06-06 Chad Fowler <>
* bin/gem: install_stub is once again the default due to requests.
2004-06-04 Chad Fowler <>
* lib/rubygems/specification.rb, lib/rubygems/doc_manager.rb:
Allow arbitrary files to be added for rdoc to run over them (as per
Jim's request).
2004-06-04 Chad Fowler <>
* bin/gem: Reformatted --search and --list output such that
multiple versions of a gem are compressed into a single entry
(with version numbers in parentheses)
2004-05-31 Jim Weirich <>
* lib/rubygems/version.rb (Gem::Dependency): Dependency attribute
renamed to version_requirements (made plural).
(Gem::Version::bump): Added bump to implement pessimistic
(Gem::Version::Requirement): Added pessimistic operator to list of
operators. Operators now implemented using lambda.
* lib/rubygems.rb (Kernel::require_gem): require_gem now takes an
array of requirement strings.
* lib/rubygems/version.rb (Gem::Version::Requirement::initialize):
Simplified initialization by making parse a bit smarter.
(Gem::Version::Requirement::satisfied_by): Simplified by using
(Gem::Version::Requirement::satisfy): Added explicit one
requirement satisfy test.
(Gem::Version::Requirement::parse): parse now returns a two
element string array (operator and version string). We don't
bother converting to an integer array during parsing.
2004-05-31 18:38 chadfowler
* gemspec now supports #rdoc_options, to which you can append
strings that will be passed to rdoc as additional options.
2004-05-08 21:57 chadfowler
* Using Gem::RubyGemsVersion to match the release number. If we
need to use this as an internal version format specifier in the
future, we can use the Gem::Version semantics.
2004-05-30 14:33 gsinclair
* bin/gem: Split --help into --help (basic), --help-options (what
--help used to be), and --help-examples.
2004-04-30 15:57 chadfowler
* bin/gem: --install-stub is no longer the default ;)
2004-04-30 15:51 chadfowler
* lib/rubygems/installer.rb: Rich Kilmer (who kicks butt) figured
out how to fix the library stub stuff.
2004-04-29 19:12 chadfowler
* lib/rubygems/doc_manager.rb: Dick Davies fixed a bug in the doc
2004-04-29 13:41 gsinclair
* lib/rubygems/installer.rb: Added skeleton code and comments to
uninstall stub apps and libs
2004-04-29 12:20 gsinclair
* install.rb: Don't install library stub for 'sources'
2004-04-29 12:20 gsinclair
* lib/rubygems/installer.rb: Improvements to library stub
installation: * don't overwrite existing file (emit warning) *
nice warning if there's a permission problem * observe
--[no-]install-stub flag (rather, observe the argument to
2004-04-29 12:16 gsinclair
* bin/gem: --install-stub is now the default
2004-04-26 20:20 chadfowler
* test/test_remote_installer.rb: Cleaning up after Gavin and his
test-breaking self. ;)
2004-04-26 12:06 gsinclair
* bin/gem, lib/rubygems/installer.rb,
lib/rubygems/remote_installer.rb: Installing a gem now causes a
library stub to be installed as well, allowing you to require
'package' without knowing it's a gem.
2004-04-25 23:18 chadfowler
* lib/rubygems/: installer.rb, specification.rb: Prompt user if
trying to uninstall a gem that other gems *may* depend on.
2004-04-25 09:27 chadfowler
* test/test_remote_installer.rb: Changed expected test results to
match new (old) gem naming scheme--"ruby" doesn't appear as a
platform in the gem name.
2004-04-25 05:50 gsinclair
* bin/gem: Changed @directory -> @install_dir for clarity
2004-04-25 05:47 gsinclair
* bin/gem: Improved display of gems, platform-wise
2004-04-25 05:46 gsinclair
* lib/rubygems/specification.rb: Added documentation
2004-04-25 04:17 jimweirich
* test/functional.rb: Fixed functional test to properly name a Ruby
platform gem.
2004-04-25 04:17 jimweirich
* packages/sources/.cvsignore, test/data/one/.cvsignore: Ignore the
proper gem name.
2004-04-25 04:17 jimweirich
* lib/rubygems/specification.rb: Undefined several attributes that
were redefined to avoid warnings.
2004-04-25 04:17 jimweirich