Run gem install behind a firewall in Windows
Posted by Marcus Wyatt on 18 March 2008
I’m contracting at a client running a Novell network and wanted to create some small little ruby scripts to automate some tasks for me. But I ran into problems using gem install behind their firewall. I’m getting the following error:
ERROR: While executing gem … (Gem::RemoteSourceException)
HTTP Response 407
Here is the steps I followed to get gem install working on my windows xp machine in painstaking detail:
Firstly we need to set the HTTP_PROXY environment variable. I’ve played around with different options, using uid and pwd and other suggestions, but all I needed was the following:
- On the desktop right click the ‘My Computer’ icon and select properties.
- Click on the advanced tab and then the ‘Environment Variables’ button.

- Now you can either add the HTTP_PROXY variable to the ‘User’ or the ‘System’ variables by clicking the ‘New’ button.

- Within the new system variable dialog, specify ‘HTTP_PROXY’ as the variable name and in the value area a url in the following format – http://[proxy_ip]:[proxy_port] – i.e. http://127.168.1.3:5865

Next we install the Ruby Win32 SSPI which gives ruby the ability to authenticate with ISA natively. We need this library because as far as I understand, it patches the Open-uri library because of some incompatibilities with windows. Anyways, follow the following steps to get it working:
- Download rubysspi from the Ruby Win32 SSPI project page(also available as gem install rubysspi but that doesn’t help much, does it?)
- Install the gem locally using the following command: gem install [local_path_to_gem]\rubysspi-1.2.3.gem i.e. C:\gems\rubysspi-1.2.3.gem
- Now copy the spa.rb file from the gem install directory and paste it in the site-ruby directory. i.e. If ruby is installed in C:\ruby, then the paths should be:
- origin path – C:\ruby\lib\ruby\gems\1.8\gems\rubysspi-1.2.3\spa.rb
- destination path – C:\ruby\lib\ruby\site_ruby\spa.rb
- Find gem.bat in your ruby bin directory (C:\ruby\bin) and replace the last line (i.e. “%~d0%~p0ruby” -x “%~f0″ %*) with the following line – @”ruby” -rspa “c:\ruby\bin\gem” %1 %2 %3 %4 %5 %6 %7 %8 %9
- Test you can access the remote ruby gems by executing the following command: gem list rails -r

- You should see similar output as shown above.
Now we can work again without any issues when trying to install or update gems.
Enjoy!!!






Run gem install behind a firewall in Windows said
[...] portalhispano wrote an interesting post today onHere’s a quick excerptI’m contracting at a client running a Novell network and wanted to create some small little ruby scripts to automate some tasks for me. But I ran into problems using gem install behind their firewall. I’m getting the following error: ERROR: While executing gem … (Gem::RemoteSourceException) HTTP Response 407 [...]
Jason said
I followed the instructions above and got this when I ran the ‘gem list rails -r’ test:
>gem list rails -r
‘örubyö’ is not recognized as an internal or external command,
operable program or batch file.
Any ideas?
Jared said
You need to edit the batch file in text mode, and re-type the quote characters. The quotes you have copied and pasted are unicode left and right double quote characters that you might get from Word, instead of the plain ascii double quote character. This should probably be fixed in the blog post.
Maruis Marais said
Check to see if the ruby executable is set in your Environment PATH. If you look at step 3 you’ll see the PATH which contains the C:\ruby\bin, you need to set this path with where your ruby lives. Now, after you’ve set this, reboot. Then test it in your cmd window by running ruby -v which should report the version of ruby you’re running. Hope that helps…
Skyward said
Somehow i missed the point. Probably lost in translation
Anyway … nice blog to visit.
cheers, Skyward.
Travis Winters said
Nice one. It’s certainly tricky making this stuff work. I was having similar problems 18 months ago, when the tools that make this easier were not quite as mature. It wasn’t any fun.
Victor Musiwa said
Thanks man, this has been a project staller for while!
Ben Cameorn said
I followed the instructions above and got this when I ran the ‘gem list rails -r’ test:
>gem list rails -r
‘örubyö’ is not recognized as an internal or external command,
operable program or batch file.
To fix this error, remove the funny Microsoft Word style double quotes and replace with the standard ones above the apostrophe on your keyboard.
jadjay said
You’re a f*cking genius !!!!
Thank you so much !
Truly!
Roy Pardee said
I’m behind an NLTM-authentication-requiring proxy server at my work and for whatever it’s worth, this has worked for me:
set http_proxy=http://win_username:win_password_here@proxy.ghc.org:8080
Where win_username and win_password were substituted w/my current windows network creds. Since that’s obviously sensitive information, I just execute that set command at a DOS prompt (which means it survives only as long as the DOS prompt session) right before calling the ‘gem’ command.
Note that this is *without* using the win32 SSPI thing. I was not able to get that to work for me…
Cheers.
Charl Fourie said
Contrary to Roy I do need Rubysspi. I am playing around with Ruby 1.9 at the moment, but Rubysspi does not seem to be compattible with that yet. If anybody has a work-around, suggestions would be welcome.
Charl Fourie said
A correction to my previous comment — I see that Justin Bailey’s sspi library has been build into the Ruby 1.9 base code. (ruby/lib/ruby/1.9.0/win32/sspi.rb)
Gems through the proxy (or the «undefined method `[]=’» error) « ELIÆ said
[...] Gems Proxy under windows Possibly related posts: (automatically generated)Run gem install behind a firewall in WindowsRuby: [...]
Tio Zé said
Thanx,
you saved my life.
Att.
Tio_Zé
(Uncle_Joseph)
Fahim Ahmed said
Thanx,
This article was a great help for me.
Don said
Ron,
Worked like a charm. Thanks!
Aaron said
Great article! Your instructions, in combination with Roy Pardee’s comment, works perfect for a windows authenticated proxy.
Thanks to both of you.
Romain said
Thanks for the article!
I only had to change the following:
set http_proxy=http://domain\username:password@server:port
When setting the HTTP_PROXY environment variable, I had to escape all non alphanumeric characters. For example, the \ between the domain and username becomes %5C. I also had a # in my password which had to become %23.
Darryl said
Thank you!