Bundler忽略了“no_proxy”

时间:2012-08-28 11:24:32

标签: ruby gem bundler

我终于有了一个gem服务器在我们的局域网中工作,它为我们为项目创建的宝石提供服务。但是这些宝石对彼此和第三方宝石有一些依赖关系。

虽然我们的“私人”宝石位于本地宝石服务器上,但第三方宝石位于rubygems.org等网站上

由于我们的lan位于代理后面,因此我必须设置$ http_proxy $ https_proxy变量才能访问互联网。对于不应通过代理解析的东西,我设置了$ no_proxy变量。

不幸的是,bundler / ruby​​似乎并不关心$ no_proxy变量吗?

在我的gemfile中,我设置了所有需要的URL。内部和外部的。但是当设置代理(包括带有本地URL的$ no_proxy)时,我从本地gem服务器的代理获得网关超时。

有没有办法(没有修补Bundler / Ruby源代码)告诉Bundler / Ruby服从代理排除?

干杯, 斯蒂芬

2 个答案:

答案 0 :(得分:1)

奇怪的是,我今天遇到了同样的问题。

作为解决方法,我最终安装了CNTLM。它指向我的上游代理,但是配置(通过cntlm.conf中的NoProxy选项)忽略它对于某些主机。

我还必须将$http_proxy环境变量设置为指向CNTLM(默认情况下为http:// localhost:3128)而不是我的上游代理。

答案 1 :(得分:1)

我深入挖掘并发现Ruby的Net::HTTPSession just plain不包含任何用于从代理查找中排除主机的代码。由于Bundler使用此类,因此无法遵循no_proxy变量。

我的解决方法:

我最终收集了Ruby项目所需的所有宝石,并将它们放在我们的本地gem服务器上。这绝对不是理想的。但至少它让我对我们项目中使用的宝石有了更多的控制权。

正如我在Ruby bug跟踪器中读到的那样,Ruby 2.0中将包含no_proxy认知。这意味着我们现在必须忍受变通办法。