exceptionz

Thoughts on Technology, Methodology and Programming.

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:

  1. On the desktop right click the ‘My Computer’ icon and select properties.
  2. Click on the advanced tab and then the ‘Environment Variables’ button.
  3. Now you can either add the HTTP_PROXY variable to the ‘User’ or the ‘System’ variables by clicking the ‘New’ button.
  4. 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:

  1. Download rubysspi from the Ruby Win32 SSPI project page(also available as gem install rubysspi but that doesn’t help much, does it?)
  2. 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
  3. 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
  4. 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
  5. Test you can access the remote ruby gems by executing the following command: gem list rails -r
  6. You should see similar output as shown above.

Now we can work again without any issues when trying to install or update gems.

Enjoy!!!

Technorati Tags: , ,

19 Responses to “Run gem install behind a firewall in Windows”

  1. [...] 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 [...]

  2. 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.

  3. 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…

  4. Skyward said

    Somehow i missed the point. Probably lost in translation :) Anyway … nice blog to visit.

    cheers, Skyward.

  5. 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.

  6. Victor Musiwa said

    Thanks man, this has been a project staller for while!

  7. 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.

  8. jadjay said

    You’re a f*cking genius !!!!

    Thank you so much !

    Truly!

  9. 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.

  10. 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.

  11. 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)

  12. [...] Gems Proxy under windows Possibly related posts: (automatically generated)Run gem install behind a firewall in WindowsRuby: [...]

  13. Tio Zé said

    Thanx,

    you saved my life.

    Att.

    Tio_Zé
    (Uncle_Joseph)

  14. Fahim Ahmed said

    Thanx,

    This article was a great help for me.

  15. Don said

    Ron,
    Worked like a charm. Thanks!

  16. 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.

  17. 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.

  18. Darryl said

    Thank you!

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>