ChangeLog   [plain text]

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

	* lib/rubygems.rb: Need to initialize @gem_home and @gem_path with
	  ||= to avoid warning.

2004-04-25 03:40  gsinclair

	* lib/rubygems.rb, test/test_gempaths.rb: RUBY_GEMS -> GEM_PATH
	  (environment variable)

2004-04-25 03:33  gsinclair

	* lib/rubygems/specification.rb: Pretty-print the specification

2004-04-25 03:18  gsinclair

	* lib/rubygems/specification.rb: Handle platform in a (hopefully)
	  consistent manner

2004-04-25 03:16  gsinclair

	* install.rb: Use return value from Builder#build to locate gem

2004-04-25 03:09  gsinclair

	* lib/rubygems/builder.rb: Return file name from #build

2004-04-25 02:32  gsinclair

	* lib/rubygems/specification.rb: Platform goes at the *end* of the
	  full name now.

2004-04-22 06:19  chadfowler

	* test/test_remote_installer.rb: Fixed test to reflect fewer cache
	  sources :(

2004-04-21 17:19  rich

	* lib/rubygems/remote_installer.rb: added support to download the
	  yaml index as a .Z (zlib compressed) file if it exists, then move
	  on to the plain yaml file if it does not

2004-04-20 20:23  chadfowler

	* examples/application/an-app.gemspec, lib/rubygems/format.rb,
	  packages/sources/lib/sources.rb: Committed Dick Davies' patch to
	  fix broken tests.

2004-04-18 01:51  gsinclair

	* bin/gem, lib/rubygems/doc_manager.rb: RDoc generation observes
	  'rdoc' config file value

2004-04-17 12:15  gsinclair

	* bin/gem: Improved 'build' error output

2004-04-17 12:12  gsinclair

	* lib/: rubygems.rb, rubygems/remote_installer.rb,
	  rubygems/specification.rb, rubygems/validator.rb: All
	  gems-related exceptions now extend Gem::Exception

2004-04-17 12:11  gsinclair

	* lib/rubygems/specification.rb: Improved handling of summary and
	  decription strings - convert to single line

2004-04-17 01:09  gsinclair

	* bin/gem: Prevent remote install attempt if local install was

2004-04-17 00:49  gsinclair

	* lib/rubygems/builder.rb: Better formatted the output code

2004-04-16 21:31  gsinclair

	* lib/rubygems/remote_installer.rb: Stoopid coding error (thanks
	  Kent Sibilev)

2004-04-16 00:00  rich

	* lib/rubygems/installer.rb: added code to optionally use nmake
	  instead of make on win32 systems

2004-04-15 20:12  gsinclair

	* bin/gem, lib/rubygems/remote_installer.rb: Clarified proxy
	  handling and interface: --[no-]http-proxy [URL]

2004-04-13 00:16  jimweirich

	* bin/gem, test/bogussources.rb, test/functional.rb: Oops, missed
	  an instance of GEM_PATH in the gem binary.

2004-04-12 21:28  jimweirich

	* lib/rubygems/cache.rb: Oops.	Missed a GEM_PATH.

2004-04-12 21:11  jimweirich

	* test/test_remote_installer.rb: removed setting of environment
	  variable for now.

2004-04-12 21:09  jimweirich

	* Rakefile, lib/rubygems.rb, lib/rubygems/cache.rb,
	  lib/rubygems/installer.rb, packages/sources/.cvsignore,
	  scripts/runtest.rb, test/.cvsignore, test/bogussources.rb,
	  test/test_format.rb, test/test_gempaths.rb,
	  test/test_remote_installer.rb, test/test_validator.rb: Added
	  test/temp to the clobber list.  Broke out tests into inline to
	  avoid test dependencies on rubygem.

2004-04-12 07:52  chadfowler

	* lib/: rubygems.rb, rubygems/installer.rb,
	  rubygems/remote_installer.rb: Cleaning up output strings wrt
	  formating of "gem (version)".

2004-04-12 07:41  chadfowler

	* lib/rubygems/installer.rb: Gavin Sinclair's uninstall bug.

2004-04-11 15:26  jimweirich

	* test/data/one/: .cvsignore, one-ruby-0.0.1.gem:  removed
	  one-ruby*.gem from source control.  This gem is automatically
	  generated in testing.

2004-04-11 10:50  chadfowler

	* bin/gem: Gavin Sinclair's test code enhancements

2004-04-11 07:50  chadfowler

	* bin/gem, lib/rubygems/installer.rb,
	  lib/rubygems/remote_installer.rb, lib/rubygems/specification.rb,
	  test/insure_session.rb, test/test_remote_installer.rb,
	  test/data/one/one-ruby-0.0.1.gem: Gavin Sinclair patches to make
	  installer return types less ambiguous.

2004-04-09 10:29  chadfowler

	* lib/rubygems/installer.rb, test/data/one/one-ruby-0.0.1.gem: gem
	  -u input validation patch by Ville Aine

2004-04-07 07:49  chadfowler

	* bin/gem, lib/rubygems/cache.rb, test/data/one/one-ruby-0.0.1.gem:
	  Finally have passing tests.

2004-04-07 07:24  chadfowler

	* lib/rubygems/remote_installer.rb,
	  test/data/one/one-ruby-0.0.1.gem: Allow default option to work on
	  remote dependency prompt.

2004-04-07 07:05  chadfowler

	* lib/rubygems/remote_installer.rb, test/test_remote_installer.rb,
	  test/data/one/one-ruby-0.0.1.gem: Applied George Marrows' patch
	  to remote_install

2004-04-07 06:23  chadfowler

	* bin/gem, test/data/one/one-ruby-0.0.1.gem: No longer "seeing"
	  double on remote searches

2004-04-05 07:39  chadfowler

	* Rakefile, test/test_remote_installer.rb,
	  test/data/one/one-ruby-0.0.1.gem: remote_installer tests aren't
	  completely hosed anymore.

2004-04-05 06:16  chadfowler

	* Rakefile, test/data/one/one-ruby-0.0.1.gem: Rake target for
	  running all tests (unit + functional) "alltests"

2004-04-05 00:48  jimweirich

	* test/: insure_session.rb, data/one/,
	  data/one/one-ruby-0.0.1.gem, data/one/one.gemspec,
	  data/one/lib/one.rb: added for functional tests

2004-04-05 00:48  jimweirich

	* test/functional.rb: Moved session gem detection to insure_session
	  file.  Modified functional tests to use gem command.	Removed
	  some directory stuff because rake guarantees the starting
	  directory.  Added test_info functional test.	Added test_build
	  functional test.  Added assert status.

2004-04-05 00:48  jimweirich

	* lib/rubygems/remote_installer.rb: Changed exceptions to inherit
	  from RunTimeError

2004-04-05 00:48  jimweirich

	* bin/gem: Changed Installer to RemoteInstaller in rubygems-info.

2004-04-05 00:48  jimweirich

	* Rakefile: Added generated test gem to clobber list.  Added
	  functional test target to rakefile.

2004-04-04 21:17  chadfowler

	* packages/sources/lib/sources.rb: Added gems mirror at

2004-04-04 20:51  chadfowler

	* bin/gem, lib/rubygems/remote_installer.rb, test/functional.rb:
	  More improved error messages (don't show stack trace when using

2004-04-04 20:43  chadfowler

	* lib/rubygems/cache.rb: Only read specs that end in "gemspec".
	  The code doesn't handle non-gemspecs very well at all.

2004-04-04 20:15  chadfowler

	* test/mock/gems/specifications/sources-0.0.1.gemspec: [no log

2004-04-04 20:09  chadfowler

	* test/mock/gems/gems/sources-0.0.1/lib/sources.rb: Rearranging
	  things a bit

2004-04-04 20:02  chadfowler

	* bin/gem, lib/rubygems/remote_installer.rb, test/bogussources.rb,
	  test/functional.rb: Better error messages on unresolvable host.

2004-04-04 12:50  chadfowler

	* redist/session.gem, test/bogussources.rb, test/functional.rb:
	  Added the beginnings of a functional test suite.

2004-04-03 22:02  chadfowler

	* lib/rubygems/validator.rb: Just had to explicitly rescue
	  VerificationError.  All is well.

2004-04-03 22:01  chadfowler

	* lib/rubygems/validator.rb: Mauricio fixed a problem with alien
	  (just failed to update it when we changed the gem directory), but
	  now there's another issue I can't find.  Anyway, this fix is
	  obviously needed.  But alien is broken anyway.

2004-04-03 21:57  chadfowler

	* install.rb, lib/rubygems/builder.rb: Batsman's bug report and
	  code for the bugs I introduced today. :)

2004-04-03 09:50  chadfowler

	* lib/rubygems/specification.rb: Defaulting a spec's require_path
	  to [] to avoid downstream errors.

2004-04-03 09:06  chadfowler

	* lib/rubygems/builder.rb, test/test_builder.rb: builder now
	  validates the gemspec.

2004-04-03 08:48  chadfowler

	* lib/rubygems/specification.rb, test/test_specification.rb: Added
	  checking for gem specs to make sure they have all required

2004-04-03 08:06  chadfowler

	* gemspecs/rublog.gemspec: My original rublog gem was broken, in
	  that it didn't have a require_path.

2004-04-02 07:48  chadfowler

	* lib/rubygems/remote_installer.rb: Prompt for installation of

	  For now, there is a puts/gets in the middle of
	  remote_installer.rb  This should probably be cleaned up later
	  (return control flow to the gem program to install the
	  dependencies, for example.

2004-04-02 07:37  chadfowler

	* TODO: [no log message]

2004-04-02 07:34  chadfowler

	* test/: simple_gem.rb, test_format.rb: Some things I forgot to cvs
	  add earlier.

2004-04-02 07:29  chadfowler

	* example/: test.gemspec, lib/test.rb, lib/test/wow.rb: Removing
	  example directory in favor of "examples" directory (just better

2004-04-02 07:26  chadfowler

	* test/test_all.rb: Removed test_all.rb.  Rake is obviously a
	  better way to do it.

2004-03-31 19:13  chadfowler

	* lib/rubygems/format.rb, lib/rubygems/installer.rb,
	  lib/rubygems/validator.rb, test/test_all.rb,
	  test/test_validator.rb: More tests and refactoring to support

2004-03-30 02:41  rich

	* lib/rubygems/installer.rb: allow passing parameters to extconf.rb

	  ruby -i blah.gem --local -- --with-option

	  everything past the -- will go to the extconf.rb...just like

2004-03-30 02:34  rich

	* lib/rubygems/: installer.rb, specification.rb: very initial
	  capability to build source gems.  this only lets you build native
	  extensions so long as you do not have to specify --with-

2004-03-29 08:31  rich

	* install.rb: switched migration of old gems to new ./gems subdir
	  to use FileUtils rather than ftools...hope to fix reported win32

2004-03-29 01:04  rich

	* lib/rubygems/doc_manager.rb: fixed bug in pathing based on new
	  directory structure

2004-03-29 01:03  rich

	* lib/rubygems/remote_installer.rb: fixed bug in default for proxy
	  (should default to nil not true)

2004-03-29 01:03  rich

	* bin/gem: updated with patch to allow for config file with minor
	  difference from gavin's patch which passes a nil to the
	  RemoteInstaller if the proxy does not exist

2004-03-28 23:22  rich

	* install.rb: added code to migrate gems if they are in the old
	  directory structure

2004-03-28 21:30  rich

	* install.rb, lib/rubygems.rb, lib/rubygems/installer.rb,
	  lib/rubygems/specification.rb: changed path of installed gems to


	  which cleans up the root.

2004-03-28 18:53  chadfowler

	* test/test_all.rb: This is the file to run for all of the tests.

	  test_remote_installer is commented out for now.  The open URI
	  patch that George gave us makes the code a lot nicer to look at,
	  but a little harder to test.

2004-03-28 18:50  chadfowler

	* lib/rubygems/remote_installer.rb, test/test_cache.rb,
	  test/test_remote_installer.rb: Added some tests for cache search

2004-03-28 12:19  chadfowler

	* bin/gem, lib/rubygems/validator.rb, test/test_validator.rb: Some
	  tests for the validator.

	  Made the validator more testable.

2004-03-28 09:30  chadfowler

	* bin/gem, lib/rubygems/validator.rb: Fixed a problem with false
	  alarms in the validator.

2004-03-27 08:23  chadfowler

	* bin/gem: No longer have an option to pass http proxy host into
	  the gem program.  Only reads it from the environment.  This is
	  because George's patch (and open-uri) work this way, and I'm lazy
	  right now.

2004-03-27 08:17  chadfowler

	* lib/rubygems/remote_installer.rb: George Marrows' nice patch to
	  remove a bunch of code from remote_installer.

	  Our remote_installer tests are failing.  We really need to start
	  paying attention to the test directory. :(`

2004-03-24 23:26  jimweirich

	* install.rb: Do not install commands ending in ~.

2004-03-24 23:25  jimweirich

	* lib/rubygems/specification.rb: Changed executables from accessor
	  to writer to avoid redefinition.

2004-03-21 21:10  jimweirich

	* bin/gem: fixed uninitialized directory option

2004-03-21 15:34  jimweirich

	* bin/gem: removed carriage returns that screwed up the #! line

2004-03-21 09:02  chadfowler

	* bin/gem: Gavin's bin/gem refactoring.

2004-03-20 17:03  jimweirich

	* bin/gem: added wrapping to gem listing

2004-03-20 12:22  chadfowler

	* install.rb: More cleaning by Gavin Sinclair

2004-03-20 12:08  chadfowler

	* examples/application/an-app.gemspec,
	  examples/application/lib/somefunctionality.rb, lib/rubygems.rb,
	  lib/rubygems/installer.rb, lib/rubygems/specification.rb: Added
	  functionality for installing applications into the system bindir.
	  Needs cleaning and refactoring.

2004-03-20 07:53  chadfowler

	* bin/gem: [no log message]

2004-03-19 23:03  chadfowler

	* bin/gem: More intuitive default.

2004-03-19 10:45  chadfowler

	* bin/gem: * Some minor rearranging of the test stuff so that
	  installation errors will also abort the test run * Don't try to
	  run tests if none are included with the gem

2004-03-18 22:27  chadfowler

	* bin/gem, example/lib/test.rb, lib/rubygems/cache.rb,
	  lib/rubygems/specification.rb: * Preliminary support for: gem -i
	  blah-0.0.1.gem --run-tests Needs to be cleaned up considerably.
	  * Introduction of new gemspec metadata "unit_test_suite", which
	  will be require'd in order to load all unit tests

2004-03-17 09:33  chadfowler

	* bin/gem: Applied Gavin Sinclair's patch to make help output

2004-03-16 21:55  chadfowler

	* bin/gem: Added --remote-list option for gem command to display
	  all gems on server.

2004-03-16 21:50  chadfowler

	* bin/gem, doc/UserDoc.html: Fixed --help case inconsistencies and
	  documentation typos as per Scott Harper's email.

2004-03-16 21:41  chadfowler

	* bin/gem: --list and --search display are the same.

2004-03-16 21:33  chadfowler

	* bin/gem: Implemented some of Scott Harper's search suggestions:
	  case insensitive sort of returned gems and display description
	  with gem name in search results.

2004-03-16 21:20  chadfowler

	* bin/gem, lib/rubygems/remote_installer.rb: http_proxy  option

2004-03-15 07:19  chadfowler

	* lib/rubygems/remote_installer.rb: Installation is now case
	  insensitive (like search)

2004-03-15 07:07  chadfowler

	* TODO, bin/gem, lib/rubygems/remote_installer.rb: Better error
	  messages.  updated TODO list.

2004-03-14 21:02  chadfowler

	* bin/gem, lib/rubygems/remote_installer.rb: --dir didn't work with
	  remote-install.  Now it does.

2004-03-14 17:48  rich

	* bin/gem: fixed uninstall bug

2004-03-14 17:18  rich

	* lib/rubygems/doc_manager.rb: changed to remove <drive>: on

2004-03-14 16:15  rich

	* install.rb: fixed typo

2004-03-14 16:13  rich

	* install.rb: generate cmd files

2004-03-14 16:13  rich

	* bin/: gem.cmd, gem_server.cmd: now generate cmd files

2004-03-14 15:52  chadfowler

	* bin/gem: Fixed a small bug with --gen-rdoc and the remote

2004-03-14 15:38  chadfowler

	* lib/rubygems.rb: Back to version 1.0 ;)

2004-03-14 15:36  chadfowler

	* lib/rubygems.rb: Updated rubygemsversion

2004-03-14 15:31  chadfowler

	* README: credits

2004-03-14 15:24  rich

	* README: initial readme

2004-03-14 15:12  rich

	* doc/UserDoc.html: updated w/doc on documentation ;-)

2004-03-14 15:01  rich

	* gemspecs/jabber4r.gemspec: added jabber4r gemspec

2004-03-14 14:58  rich

	* bin/gem_server: change the documentation path to /

2004-03-14 14:57  rich

	* install.rb: remove installing .rb files from ./bin

2004-03-14 14:32  rich

	* doc/: DevDoc.txt, GemSpecification.txt, UserDoc.html,
	  UserDoc.txt: updated with latest docs

2004-03-14 12:05  chadfowler

	* test/test_remote_installer.rb: Fixed tests.

2004-03-14 11:31  chadfowler

	* lib/rubygems/specification.rb: Fixed bug that would manifest
	  itself if a gem creator put apostrophes/single-quotes in the gem

2004-03-14 00:04  rich

	* doc/: UserDoc.html, UserDoc.txt: finished user's guide

2004-03-13 21:48  rich

	* doc/: DevDoc.html, UserDoc.html, UserDoc.txt: updated user's
	  guide...will finish section on ruby's library mgt soon ;-)

2004-03-13 20:48  chadfowler

	* doc/DevDoc.txt: Added documentation on making and distributing

2004-03-13 20:20  chadfowler

	* TODO: [no log message]

2004-03-13 19:51  rich

	* doc/: DevDoc.html, DevDoc.txt, GemSpecification.html,
	  GemSpecification.txt, UserDoc.html, UserDoc.txt, doc.css,
	  makedoc.rb: added these doc (wiki) files from

2004-03-13 17:56  chadfowler

	* TODO, gemspecs/README, gemspecs/cgikit-1.1.0.gemspec,
	  gemspecs/linguistics.gemspec, gemspecs/ook.gemspec,
	  gemspecs/progressbar.gemspec, gemspecs/redcloth.gemspec,
	  gemspecs/rublog.gemspec, gemspecs/ruby-doom.gemspec,
	  gemspecs/rubyjdwp.gemspec, gemspecs/statistics.gemspec: Added
	  some gemspecs for actual RAA packages.

2004-03-13 14:35  chadfowler

	* TODO, lib/rubygems/remote_installer.rb: Preliminary HTTP Proxy
	  support.  Untested.

2004-03-13 09:11  chadfowler

	* packages/sources/lib/sources.rb: Changed to point to rubyforge

2004-03-12 22:40  rich

	* bin/generate_yaml_index.rb: generates a yaml index for a gems

2004-03-12 22:02  chadfowler

	* bin/gem_server: No longer serving gem specs.

2004-03-12 21:42  chadfowler

	* TODO, bin/gem_server.cgi: We decided to trash gem_server.cgi in
	  favor of the static content generator Rich is working on.

2004-03-12 21:15  chadfowler

	* TODO: [no log message]

2004-03-12 20:11  chadfowler

	* bin/gem, lib/rubygems/installer.rb,
	  lib/rubygems/remote_installer.rb: Basic search funtionality in.

	  Slight refactoring of Installer and RemoteInstaller

2004-03-12 18:28  chadfowler

	* TODO: [no log message]

2004-03-12 16:37  chadfowler

	* TODO: [no log message]

2004-03-12 16:14  chadfowler

	* TODO: More TODO items

2004-03-08 13:50  chadfowler

	* TODO, bin/gem_server, example/test.gemspec: Use rdoc templates
	  for HTML.  Nearly XHTML compliant.

2004-03-08 08:21  chadfowler

	* TODO: Added TODO list

2004-03-08 08:12  chadfowler

	* lib/rubygems/validator.rb: Fixed a small (but crippling) bug in
	  the validator.

2004-01-24 13:49  chadfowler

	* bin/gem, lib/rubygems.rb, lib/rubygems/cache.rb,
	  lib/rubygems/validator.rb, lib/rubygems/version.rb: More cleanup.

2004-01-24 13:29  chadfowler

	* bin/gem, lib/rubygems/remote_installer.rb: A little cleaning of
	  (Remote)Installer inconsistencies

2004-01-24 13:23  chadfowler

	* bin/gem: Removed the weird instance variable thing we had going
	  on. :)

2004-01-07 17:34  chadfowler

	* bin/gem: removed old cruft

2003-12-24 11:32  chadfowler

	* lib/rubygems/validator.rb: Gem validation was returning false
	  negatives (corrupted gems were not reporting their corruption).

2003-12-18 14:18  chadfowler

	* lib/rubygems/cache.rb: Lyle noticed some out of date rdoc
	  documentation.  Thanks Lyle!

2003-12-03 08:05  chadfowler

	* install.rb: Gavin's patch for installing the files in bin/ on
	  rubygems installation.

2003-11-30 00:36  chadfowler

	* lib/rubygems/specification.rb: Little warnings adjustment

2003-11-29 17:27  jimweirich

	* Rakefile: added Rakefile to package

2003-11-29 16:23  jimweirich

	* lib/rubygems/specification.rb: Removed defined? and initialized

2003-11-29 16:08  jimweirich

	* lib/rubygems/specification.rb: Initialized @loaded and check
	  defined?(@platform) to silence some -w warnings.

2003-11-29 09:26  rich

	* bin/gem_server, lib/rubygems/doc_manager.rb: updated to support
	  /doc URL to generate list of installed gems w/doc link for rdoc
	  generated links.

2003-11-29 08:30  rich

	* lib/rubygems/doc_manager.rb: minor format change of error message

2003-11-29 08:29  rich

	* bin/gem, lib/rubygems/builder.rb, lib/rubygems/doc_manager.rb,
	  lib/rubygems/installer.rb: instantiates DocManager now.  errors
	  out on no install of RDoc.  warns if .gemspec does not specify
	  having rdoc, but rdoc is generated

2003-11-29 02:13  rich

	* bin/gem, lib/rubygems.rb, lib/rubygems/doc_manager.rb,
	  lib/rubygems/format.rb, lib/rubygems/installer.rb,
	  lib/rubygems/specification.rb: added capability to generate rdoc
	  on install of gem (--gen-rdoc).  this doc is placed in
	  Gem.dir+doc+gem.full_name fixed but in installer when moving to
	  format (not calling each) added doc manager to add/remove
	  documenatation (right now only rdoc)

2003-11-29 01:28  rich

	* lib/rubygems/specification.rb: should not define the attr_readers
	  for requirements/dependencies so undef is unnecessary

2003-11-29 00:12  jimweirich

	* lib/rubygems/specification.rb: Undefing dependencies and
	  requirements removes warning when used with -w.

2003-11-29 00:12  jimweirich

	* lib/rubygems.rb: Using defined?($GEM_PATH) avoids warning when
	  used with -w switch.

2003-11-28 15:58  chadfowler

	* bin/gem, example/test.gemspec, lib/rubygems.rb,
	  lib/rubygems/installer.rb, lib/rubygems/validator.rb,
	  lib/rubygems/format.rb: Separated gem file reading into a
	  separate class/file.

2003-11-28 15:20  rich

	* lib/rubygems/specification.rb: added has_rdoc?/has_rdoc methods
	  ... will be used to autogenerate rdoc

2003-11-28 12:30  chadfowler

	* lib/rubygems/validator.rb: Rdoc added

2003-11-28 11:51  chadfowler

	* bin/gem, lib/rubygems.rb, lib/rubygems/validator.rb: A little
	  rearranging of the validation/alien code.  It's still ugly, but
	  at least it's in its own file now. :)

2003-11-28 11:40  chadfowler

	* bin/gem: Removed a little cruft.

2003-11-27 11:04  chadfowler

	* bin/gem: Print success message for each gem *not* containing

2003-11-27 11:00  chadfowler

	* bin/gem, lib/rubygems/installer.rb: Preliminary support for gem
	  directory validation (--alien).  Looks for bad or missing gem
	  files, missing spec files, files installed that aren't part of
	  the gem, checksum mismatches, etc.

	  Very ugly code.  Very ugly output.  Work in progress.

2003-11-24 11:58  rich

	* lib/rubygems/specification.rb: change full_name to include

2003-11-24 09:15  chadfowler

	* bin/gem: Option for HTTP Proxy server for remote-install.  Not
	  yet implemented.

2003-11-23 20:22  chadfowler

	* lib/rubygems/builder.rb: Removed a stray \" in builder's success

2003-11-23 20:16  chadfowler

	* lib/rubygems/specification.rb: Leaving escape in but commenting
	  out its functionality because it hosed some other things up.
	  Need to revisit this for the case where:

	   s.summary = "Chad's Thing" # It's the apostrophe

2003-11-23 20:08  chadfowler

	* lib/rubygems/specification.rb: Escape quotes to avoid invalid
	  gemspecs in the #{Gem.dir}/specifications directory

2003-11-23 19:21  chadfowler

	* bin/gem: Less ugly error message on file IO problems.

2003-11-22 22:34  chadfowler

	* bin/gem: Very simple support for validating a gem.  Will probably
	  move this into the libs eventually.

2003-11-22 20:53  chadfowler

	* example/test.gemspec, lib/rubygems/builder.rb: Generate MD5
	  checksum for gem and store it in the file.  Will be used to
	  validate gem file before installation.

2003-11-22 13:58  chadfowler

	* install.rb, lib/rubygems/remote_installer.rb,
	  packages/sources/lib/sources.rb: remote-install sources are now
	  installed as a ruby gem at the time of rubygems installation.
	  sources gemspec included in the rubygems distribution.

2003-11-22 12:52  chadfowler

	* bin/gem: Allow gem info by --version

2003-11-22 11:50  chadfowler

	* lib/: rubygems.rb, rubygems/cache.rb: Fixed the bug I introduced
	  by fixing Rich's bug with gem cache caching. ;)

	  Gem::Cache now has a #refresh! method.

2003-11-22 10:16  chadfowler

	* bin/gem, lib/rubygems.rb, lib/rubygems/installer.rb,
	  lib/rubygems/remote_installer.rb: - Fixed bug in Gem.cache
	  (though we may want to revisit it for in-memory caching - Command
	  line configurable version for uninstall

2003-11-22 00:28  rich

	* lib/rubygems/cache.rb: rdoc'd search method

2003-11-22 00:24  rich

	* bin/gem, lib/rubygems/cache.rb, lib/rubygems/version.rb,
	  test/test_version_comparison.rb: removed search_by_name because
	  search does the same thing.  version::requirement was updated to
	  that if you did not specific a version operation, it assumes an =
	  sign.  updated tests accordingly

2003-11-21 23:58  rich

	* lib/rubygems/: cache.rb, installer.rb: allow version to be
	  specified in uninstall (if called programatically)

2003-11-21 23:52  rich

	* lib/: rubygems.rb, rubygems/cache.rb, rubygems/installer.rb,
	  rubygems/specification.rb: > moved all searching into cache..and
	  now search by name/version and return an
	  ordered list (.last == highest version).
	  > modified uninstaller to allow selecting a specific version to
	  uninstall if
	  multiple versions are installed.
	  > implemented comparison function on specification.
	  > changed require_gem to use new search of cache function

2003-11-21 21:06  chadfowler

	* bin/gem, lib/rubygems/remote_installer.rb: Added ability to
	  specify optional version requirement for remote installations

2003-11-21 20:25  chadfowler

	* test/test_remote_installer.rb: Removed carriage returns

2003-11-21 19:04  chadfowler

	* bin/gem_server: Converted from getopts to optparse.

2003-11-21 18:31  rich

	* lib/rubygems.rb: changed the order in which operations are
	  performed in require_gem.  it now requires dependent gems prior
	  to adding the require_paths to a gem.  otherwise we could have
	  had a LoadError on a dependent gem but the paths were already
	  added...potential problem

2003-11-21 18:21  rich

	* lib/rubygems/installer.rb: updated to ensure
	  (specifications/cache) directories exist for a provided path

2003-11-21 18:01  rich

	* lib/rubygems/specification.rb: updated rdoc

2003-11-21 17:59  rich

	* bin/gem, lib/rubygems/builder.rb, lib/rubygems/installer.rb,
	  lib/rubygems/specification.rb: fixed various bugs with the
	  $GEM_PATH stuff, specifically on uninstall.  Also, changed to
	  allow specifying a directory on install (--dir) and force install
	  (--force).  Changed the builder generated ruby header to use

2003-11-21 07:03  chadfowler

	* lib/: rubygems.rb, rubygems/cache.rb,
	  rubygems/remote_installer.rb: Remote installation of dependencies
	  now works.  It downloads all dependent gems or errors out.

	  Fixed bug in require_gem.  Wrong call to cache.

2003-11-21 00:59  rich

	* bin/gem, example/test.gemspec, lib/rubygems.rb,
	  lib/rubygems/cache.rb, lib/rubygems/installer.rb,
	  lib/rubygems/specification.rb: added capability to support
	  multiple paths $GEM_PATH in Ruby and RUBY_GEMS in the ARGV.  Lots
	  of changes were needed to support this.  also added the --force
	  and --dir options to gem installtion

2003-11-20 22:50  chadfowler

	* bin/gem: Switched to optparse.  Not a whole lot gained, but it
	  seems to be the way Ruby is going.  It's nice not to have to do
	  the "when" stuff, I guess.

2003-11-19 23:41  chadfowler

	* lib/rubygems/: installer.rb, remote_installer.rb: Added to the hardcoded remote install list.

	  Fixed a dangling YAML.load that broke uninstall.

2003-11-19 22:56  rich

	* lib/rubygems.rb: fixed bug in loading rubygems

2003-11-19 22:51  chadfowler

	* bin/: gem_server, gem_server.cgi: require 'yaml' :)

2003-11-19 22:44  rich

	* lib/: rubygems.rb, rubygems/cache.rb, rubygems/specification.rb:
	  changed the format of stuff stored in the spec directory to ruby
	  instead of YAML.  This allows us to not have to load yaml in
	  'require_gem'.  switched the specification list to a Cache

2003-11-19 21:56  rich

	* lib/rubygems/installer.rb: write the spec file in ruby and not in
	  yaml format (in the spec dir)

2003-11-19 20:32  rich

	* lib/rubygems/specification.rb: added to_ruby method to generate a
	  ruby string that can be eval'ed in to build a Gem Specification

2003-11-17 21:37  jimweirich

	* bin/: gem_server, gem_server.cgi: removed carriage returns

2003-11-17 21:19  chadfowler

	* install.rb: Accidentally left some junk in the file.

2003-11-17 19:50  dblack

	* test/test_version_comparison.rb: * Test cases for Version.rb

2003-11-17 19:50  dblack

	* lib/rubygems/version.rb: * Split off tests into

2003-11-17 12:37  chadfowler

	* install.rb: Create File.join(Config::CONFIG['libdir'], "ruby",
	  "gems") + "specifications" and + "cache" during installation.

	  Need to remove this from rubygems.rb and replace with
	  ensure_directory call.

2003-11-17 12:29  rich

	* lib/rubygems/version.rb: rdoc added

2003-11-17 11:31  rich

	* lib/rubygems/specification.rb: rdoc added

2003-11-17 10:38  rich

	* lib/rubygems/: cache.rb, installer.rb: made rdoc comments and
	  renamed some variables

2003-11-17 08:48  dblack

	* lib/rubygems/version.rb: * Added stricter checking of incoming
	  Requirement string

	  * Added unit tests at end of file

2003-11-17 07:32  chadfowler

	* bin/: gem_server, gem_server.cgi: Refactored gem_server program
	  and added an equivalent CGI version.

2003-11-17 00:14  rich

	* lib/: rubygems.rb, rubygems/builder.rb, rubygems/cache.rb: added
	  rdoc documentation

2003-11-16 17:15  chadfowler

	* bin/: gem.cmd, gem_server.cmd: Added some batch files for Windows

2003-11-16 17:08  rich

	* install.rb, bin/gem, bin/gem_server, example/test.gemspec,
	  example/lib/test.rb, example/lib/test/wow.rb, lib/rubygems.rb,
	  lib/rubygems/builder.rb, lib/rubygems/cache.rb,
	  lib/rubygems/installer.rb, lib/rubygems/remote_installer.rb,
	  lib/rubygems/specification.rb, lib/rubygems/version.rb,
	  test/test_remote_installer.rb: Initial import developed at
	  RubyConf 2003 by:

	  Rich Kilmer Chad Fowler David Black Paul Brannon Jim Weirich

2003-11-16 17:08  rich

	* install.rb, bin/gem, bin/gem_server, example/test.gemspec,
	  example/lib/test.rb, example/lib/test/wow.rb, lib/rubygems.rb,
	  lib/rubygems/builder.rb, lib/rubygems/cache.rb,
	  lib/rubygems/installer.rb, lib/rubygems/remote_installer.rb,
	  lib/rubygems/specification.rb, lib/rubygems/version.rb,
	  test/test_remote_installer.rb: Initial revision