12

I'm trying to install the bundler gem using $ gem install bundler. When I execute the command, I receive the following response:

ERROR:  Could not find a valid gem 'bundler' (>= 0), here is why:
    Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation   timed out - connect(2) (https://api.rubygems.org/latest_specs.4.8.gz)
ERROR:  Possible alternatives: bundler

In an effort to make sure I wasn't going crazy, I tried installing nokogiri:

ERROR:  Could not find a valid gem 'nokogiri' (>= 0), here is why:
  Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://api.rubygems.org/latest_specs.4.8.gz)
ERROR:  Possible alternatives: nokogiri

And a2z:

ERROR:  Could not find a valid gem 'a2z' (>= 0), here is why:
  Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://api.rubygems.org/quick/Marshal.4.8/a2z-0.1.3.gemspec.rz)

If anyone has experience this issue before and can help me out it would be greatly appreciated.

If it helps, I'm running MacOS Mavericks and have gem version 2.2.2.

Matt
  • 6,993
  • 4
  • 29
  • 50

13 Answers13

20

I resolved this issue disabling the IPv6 connections in my system OS.

It forces the OS just use the IPv4 and then it works.

desertnaut
  • 57,590
  • 26
  • 140
  • 166
Jean Felipe
  • 333
  • 2
  • 9
  • 1
    Thanks, this worked. And since I had "Off" option missing in my Ethernet settings, I had to use CLI command `networksetup -setv6off Ethernet` – RAM237 Jan 21 '20 at 15:12
  • Thanks - had this strange and obscure problem too. Both answer and comment here helped a lot. – user37309 Aug 20 '20 at 05:49
  • 2
    On Debian: `sysctl -w net.ipv6.conf.default.disable_ipv6=1; sysctl -w net.ipv6.conf.all.disable_ipv6=1` – rodvlopes Oct 10 '20 at 00:38
9

For people using Windows, the following worked for me on Windows 10. See also my reply on the ruby gems issues list.

  1. Go to Control Panel > Network and Internet > Network connections
  2. Select the network connection you're currently using
  3. Right click on it and choose Properties
  4. Remove check mark for Internet Protocol version 6 (TCP/IPv6)
  5. Click OK
  6. Run your gem command again
Roald
  • 2,459
  • 16
  • 43
  • Thank you for the comment explaining how to do this on Windows. This fix didn't work for me, as I ended up not having any internet (even though ipv4 was checked by default) so I had to unplug and replug my wifi usb stick and change it back to get internet – Justin May 28 '21 at 05:58
6

In your Gemfile set your

source 'http://production.s3.rubygems.org'

This may not be an official answer, but it worked for me after three frustrating days trying to access rubygems.org.

Gernot Ullrich
  • 647
  • 6
  • 7
5

i had the same issue which i solved by disabling my VPN. try looking at proxies, VPNs, and other networking issues.

ludant
  • 61
  • 1
  • 2
3

api.rubygems.org is having issues with IPV6 host address. I faced the same issue after I setup the ubuntu server in vbox. We need to configure it to use our host's IPV4 first and then try IPV6.

So we can change the priority by adding this line ti /etc/gai.conf:

# Debian defaults.
precedence  ::1/128         50
precedence  ::/0            40
precedence  2002::/16       30
precedence  ::/96           20
precedence  ::ffff:0:0/96   10

# Low precedence for api.rubygems.org IPv6 addresses.
precedence  2a04:4e42::0/32  5

And it worked like a charm!

Dhrumil Panchal
  • 406
  • 5
  • 11
3
  1. ping rubygems.org and get the IP address.
  2. Edit your /etc/hosts file and add the line: <IPADD> rubygems.org.
  3. gem update --system.
Dilip K
  • 31
  • 2
3

For the people using macOS, the following worked me on macOS 12.3.1.

  1. Go to System Preferences > Network
  2. Click on the Advanced... button
  3. Go to TCP/IP tab on the top
  4. Change Configure IPv6 from Automatically to Manually
  5. Click on the OK
  6. Click on the Apply
  7. Re-try installing your gems
  8. Revert the changes back
Chootti
  • 357
  • 3
  • 15
1

just add --source http://rubygems.org to your installs. The issue most likely is with your internet connection.

DJSampat
  • 309
  • 2
  • 8
1

In my case helped the following:

sudo gem update --system
Mobile Developer
  • 5,730
  • 1
  • 39
  • 45
  • 1
    In my case even this is throwing a timeout issue – Emjey Jun 21 '18 at 12:09
  • 2
    This is purely a Network and DNS config issue. I ran into the same thing, checked with a network which is not bound to any strict firewalls and auto-configured DNS, this worked. Looks like the source url of repo starts from https and not https, that maybe the cause. Just a guess, not sure. – Vighnesh Pai Aug 08 '18 at 07:04
1
  1. Disable ipv6
  2. sudo gem update --system
  3. gem install bundler
Arihant
  • 660
  • 6
  • 9
1

I encountered this just now. I needed to disable IPv6. I had to set mine to link-local only to get it to work. Otherwise, it's the same as @chootti's list:

  1. Go to System Preferences > Network
  2. Click on the Advanced... button
  3. Go to TCP/IP tab on the top
  4. Change Configure IPv6 from Automatically to Link-local only
  5. Click on OK

Then I ran sudo gem update --system to update RubyGems. I still couldn't install gems with IPv6 enabled, so it looks like that needs to be off to install from RubyGems.

Machine this worked on:

OS: MacOS Monterey 12.4

Machine: Apple M1 (2020)

Ruby install manager: ASDF

nialbima
  • 11
  • 3
0

dig api.rubygems.org +short

Adding below line to /etc/hosts worked for me:

151.101.192.70  rubygems.org
desertnaut
  • 57,590
  • 26
  • 140
  • 166
Vijendra
  • 338
  • 3
  • 11
0

I ran into the same issue. Try running:

bundle pristine
freshmurry
  • 35
  • 5