Issue #8313 has been updated by legerf (Frederic Leger).


With wireshark I test and capture all traffic with the http://production.s3.rubygems.org server. The firewalls aren't the problem. All packets send/receive with success. And the last TCP/HTTP exchange send a result "HTTP/1.1 200 OK", size of reasembled TCP segments=459 168 bytes. My WAN firewall doesn't block anything for this address.

I tested "check" gem command and I see some errors:

    $ sudo gem check -V --backtrace
    Checking gems...

bigdecimal-1.2.0.gem has 1 problems
bigdecimal-1.2.0:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/bigdecimal-1.2.0

io-console-0.4.2.gem has 1 problems
io-console-0.4.2:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/io-console-0.4.2

json-1.7.7.gem has 1 problems
json-1.7.7:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/json-1.7.7

minitest-4.3.2.gem has 1 problems
minitest-4.3.2:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/minitest-4.3.2

psych-2.0.0.gem has 1 problems
psych-2.0.0:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/psych-2.0.0

rake-0.9.6.gem has 2 problems
/opt/local/lib/ruby2.0/gems/2.0.0/cache/rake-0.9.6.gem:
missing gem file /opt/local/lib/ruby2.0/gems/2.0.0/cache/rake-0.9.6.gem
/opt/local/lib/ruby2.0/gems/2.0.0/specifications/rake-0.9.6.gemspec:
Spec file missing for installed gem

rdoc-4.0.0.gem has 2 problems
/opt/local/lib/ruby2.0/gems/2.0.0/cache/rdoc-4.0.0.gem:
missing gem file /opt/local/lib/ruby2.0/gems/2.0.0/cache/rdoc-4.0.0.gem
/opt/local/lib/ruby2.0/gems/2.0.0/specifications/rdoc-4.0.0.gemspec:
Spec file missing for installed gem

test-unit-2.0.0.0.gem has 2 problems
/opt/local/lib/ruby2.0/gems/2.0.0/cache/test-unit-2.0.0.0.gem:
missing gem file /opt/local/lib/ruby2.0/gems/2.0.0/cache/test-unit-2.0.0.0.gem
/opt/local/lib/ruby2.0/gems/2.0.0/specifications/test-unit-2.0.0.0.gemspec:
Spec file missing for installed gem

$ sudo gem contents -V --backtrace
ERROR: While executing gem ... (Gem::CommandLineError)
Please specify at least one gem name (e.g. gem build GEMNAME)
/opt/local/lib/ruby2.0/2.0.0/rubygems/command.rb:177:in get_all_gem_names'
/opt/local/lib/ruby2.0/2.0.0/rubygems/commands/contents_command.rb:65:inexecute'
/opt/local/lib/ruby2.0/2.0.0/rubygems/command.rb:305:in invoke_with_build_args'
/opt/local/lib/ruby2.0/2.0.0/rubygems/command_manager.rb:170:inprocess_args'
/opt/local/lib/ruby2.0/2.0.0/rubygems/command_manager.rb:130:in run'
/opt/local/lib/ruby2.0/2.0.0/rubygems/gem_runner.rb:60:inrun'
/opt/local/bin/gem:21:in `'

    $ sudo gem list --local -V --backtrace

*** LOCAL GEMS ***

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
test-unit (2.0.0.0)
----------------------------------------
Bug #8313: rubygem 2.0 can't communicate with remote sources http://rubygems.org/
https://bugs.ruby-lang.org/issues/8313#change-38863

Author: legerf (Frederic Leger)
Status: Open
Priority: High
Assignee: cruby-mac
Category: platform/darwin
Target version: 
ruby -v: ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


I try to use Ruby 2.0 on my MAC OSX Mountain Lion with macports. The "sudo port install ruby2.0" and "sudo port select --set ruby ruby2.0" was success. But when I try to install gem package I have these errors:
>$ sudo gem list -r --debug

*** REMOTE GEMS ***

Exception `Errno::ENOENT' at /opt/local/lib/ruby2.0/2.0.0/rubygems/remote_fetcher.rb:298 - No such file or directory - /Users/fred/.gem/specs/rubygems.org%80/latest_specs.4.8
Exception `Errno::EAGAIN' at /opt/local/lib/ruby2.0/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
Exception `Errno::EAGAIN' at /opt/local/lib/ruby2.0/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
...

Some others informations:

>$ sudo gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.0
  - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12]
  - INSTALLATION DIRECTORY: /opt/local/lib/ruby2.0/gems/2.0.0
  - RUBY EXECUTABLE: /opt/local/bin/ruby2.0
  - EXECUTABLE DIRECTORY: /opt/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /opt/local/lib/ruby2.0/gems/2.0.0
     - /Users/fred/.gem/ruby/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

>$ sudo gem list -d

*** LOCAL GEMS ***

bigdecimal (1.2.0)
    Authors: Kenta Murata, Shigeo Kobayashi
    Homepage: http://www.ruby-lang.org
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    Arbitrary-precision decimal floating-point number library.

io-console (0.4.2)
    Author: Nobu Nakada
    Homepage: http://www.ruby-lang.org
    License: ruby
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    Console interface

json (1.7.7)
    Author: 
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    This json is bundled with Ruby

minitest (4.3.2)
    Author: 
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    This minitest is bundled with Ruby

psych (2.0.0)
    Author: Aaron Patterson
    Homepage: http://github.com/tenderlove/psych
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    Psych is a YAML parser and emitter

rake (0.9.6)
    Author: 
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    This rake is bundled with Ruby

rdoc (4.0.0)
    Author: 
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    This rdoc is bundled with Ruby

test-unit (2.0.0.0)
    Author: Shota Fukumori
    Homepage: http://www.ruby-lang.org
    Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

    test/unit compatible API testing framework

A part of /opt/local/lib/ruby2.0/2.0.0/rubygems/remote_fetcher.rb:

...
  ##
  # Downloads +uri+ to +path+ if necessary. If no path is given, it just
  # passes the data.

  def cache_update_path uri, path = nil, update = true
    mtime = path && File.stat(path).mtime rescue nil   <--- line 298

    if mtime && Net::HTTPNotModified === fetch_path(uri, mtime, true)
      Gem.read_binary(path)
    else
      data = fetch_path(uri)

      if update and path then
        open(path, 'wb') do |io|
          io.write data
        end
      end

      data
    end
  end
...



-- 
http://bugs.ruby-lang.org/