1

我终于有一个 gem 服务器在我们的局域网中工作,它为我们为项目创建的 gem 提供服务。但是这些 gem 彼此之间以及第 3 方 gem 之间存在一些依赖关系。

虽然我们的“私有”gem 驻留在本地 gem 服务器上,但第 3 方 gem 驻留在 ruby​​gems.org 等网站上

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

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

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

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

干杯,斯特凡

4

2 回答 2

1

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

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

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

于 2012-08-28T22:30:29.453 回答
1

我挖得更深一点,发现 Ruby 的Net::HTTPSessionjust plain 不包含任何用于从代理查找中排除主机的代码。由于 Bundler 使用这个类,它不可能服从这个no_proxy变量。

我的解决方法:

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

正如我在 Ruby 错误跟踪器中所读到的,no_proxyRuby 2.0 中将包含一个意识。这意味着我们现在必须接受解决方法。

于 2012-08-30T13:18:52.657 回答