This project is archived and is in readonly mode.
gem install fails when a gem requires multiple sources
Reported by Mike Perham | August 13th, 2009 @ 07:01 PM
I have a gem on github. It depends on a gem at rubyforge.
config.gem 'mperham-right_aws', :source => 'http://gems.github.com', :version => '1.10.1', :lib => 'right_aws'
This will fail to install via rake gems:install since the source parameter overrides any other RubyGems sources so gem will not look at rubyforge for the dependency. I think the simplest fix is to just add rubyforge as an additional source if a source is specified:
rails-2.3.3/lib/rails/gem_dependency.rb:285
def install_command
cmd = %w(install) << name
cmd << "--version" << %("#{requirement.to_s}") if requirement
cmd << "--source" << @source if @source
+ cmd << "--source" << 'http://gems.rubyforge.org' if @source
cmd
end
My gem installs as expected with this change.
Comments and changes to this ticket
-
Matt Jones August 17th, 2009 @ 03:59 PM
This is not a correct behavior - we don't want to be hardcoding gem server locations. It's actually a known issue in RubyGems, not Rails. The correct thing to do here would be to extract all of the gem sources that Rubygems knows about and add them all to the string - maybe you'd be interested in writing that patch?
I'd also point out that the :source option is only required if the user doesn't have gems.github.com added as a source globally; that's a lot more likely now than it was, say, a year ago.
-
Mike Perham August 17th, 2009 @ 04:25 PM
Agreed that this is a RubyGems bug. I'll write the patch if I have some free time soon.
-
CancelProfileIsBroken September 25th, 2009 @ 12:52 PM
- Tag changed from gem to bugmash, gem
-
Erik Ostrom September 26th, 2009 @ 05:19 AM
+1 verified the behavior, the test, and the patch. Seems like this is a good workaround for a failing in RubyGems.
-
Matt Jones September 26th, 2009 @ 08:38 PM
The patch looks reasonable, but there's one case I'm a little concerned about: what if there's a gem name collision between the various pre-configured servers? In other words, gems.rubyforge.org has a gem named SomeGem, and another server also has one with the same name (potentially different versions; possibly even different authors).
The Rubygems interpretation of --source will allow a user to disambiguate which one they mean, but this patch removes that functionality. Maybe an :exclusive_source option would be handy as well?
-
Rizwan Reza January 21st, 2010 @ 07:15 AM
- State changed from new to wontfix
- Tag changed from bugmash, gem to gem
I think this is out of question as Rails 3.0 is using Bundler (or Bubble).
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>