如何在代理后面使用bundler?

时间:2010-10-06 21:30:25

标签: ruby-on-rails ruby proxy rubygems bundler

我从 sudo bundle install 命令获得以下输出:

Fetching source index for `http://rubygems.org/`  
Could not reach rubygems repository `http://rubygems.org/`  
Could not find gem 'rspec-rails (>= 2.0.0.beta.22, runtime)' in any of the gem sources.

我已正确设置$ http_proxy并且我已将 gem:--http-proxy = my proxy 添加到〜/ .gemrc。这些设置允许我的gem命令工作,我希望他们会转换为bundler,但没有这样的运气。

思考sudo可能不会继承我的所有环境,我也将这些设置添加到我的root用户,但是nada。

此时,bundler阻止我部署我的应用程序,我发现很少有其他人遇到这个问题。如果没有人有答案,我将被迫从我的Rails应用程序中删除捆绑器(我不介意做...)

11 个答案:

答案 0 :(得分:70)

OSX& Linux

export http_proxy=http://user:password@host:port
export HTTP_PROXY=$http_proxy

如果正在使用HTTPS,请将其设置为

export https_proxy=http://user:password@host:port
export HTTPS_PROXY=$https_proxy

如果您使用sudo,默认情况下sudo不会保留http代理变量。使用-E标志来保留它

$ sudo -E bundle install

默认情况下使sudo保留环境变量:

https://memset.wordpress.com/2010/10/14/bash-http_proxy-from-a-user-environment-to-sudo-one/

Windows

如下面的答案所示,您可以使用SET代替

SET HTTP_PROXY=http://user:password@host:port
SET HTTPS_PROXY=%HTTP_PROXY%

答案 1 :(得分:15)

我发现设置HTTP_PROXY(除了http_proxy之外)也产生了积极的影响,即它对我有用。因此,假设您已将http_proxy环境变量设置为正确,请尝试(如果您使用的是bash)

export HTTP_PROXY=$http_proxy

然后还使用-E选项来sudo(保存环境变量),所以

sudo -E bundle install

首领

答案 2 :(得分:5)

要在win XP / 7上获得代理服务器,我需要执行以下操作:

我将http_proxy添加到Environment Variables

  • 我的电脑
  • 高级系统设置
  • 高级标签环境
  • 变量
  • 变量名称= http_proxy
  • 变量值= MY_PROXY
  • 点击确定

将MY_PROXY更改为您的任何内容。

这适用于捆绑商。 .gemrc代理设置仅适用于宝石。

感谢 杰米

答案 3 :(得分:4)

如果您不想在系统中设置全局变量,可以编辑〜/ .gemrc并将其写为

---
:benchmark: false
:verbose: true
:sources:
- http://rubygems.org/
- http://gems.rubyforge.org
:backtrace: false
:bulk_threshold: 1000
:update_sources: true
gem: --http-proxy=http://USERNAME:PASSWORD@ADDRESS:PORT

答案 4 :(得分:3)

您可以使用gem install在本地下载所需的gem,然后捆绑安装。我知道,不完全是整洁的,但确实有效。

答案 5 :(得分:3)

使用批处理文件可能更灵活,更安全:

SET /P login="Enter proxy login: "
SET /P password="Enter proxy password: "
SET HTTP_PROXY=http://%login%:%password%@proxy.com:8080
SET HTTPS_PROXY=%HTTP_PROXY%

CLS

bundle install

答案 6 :(得分:1)

Windows操作系统,在执行bundle install

之前运行以下命令
SET http_proxy=http://user:password@host:port

答案 7 :(得分:0)

确保已经设置了操作系统默认的http_proxy。如果您正在使用Linux,请尝试以下命令以了解它指向的代理。

echo $http_proxy

在我的Ubuntu操作系统中,我将http_proxy环境变量设置为〜/ .bashrc中的代理服务器

答案 8 :(得分:0)

$ export http_proxy="http://username:password@host:port"
$ export ftp_proxy="http://username:password@host:port"
$ sudo visudo

在文件中添加以下行:

Defaults env_keep = "http_proxy ftp_proxy"

在这一行之上:

Defaults        env_reset

然后以sudo运行你的命令它将起作用。

参考:https://memset.wordpress.com/2010/10/14/bash-http_proxy-from-a-user-environment-to-sudo-one/

答案 9 :(得分:0)

我正在运行Ubuntu。 $ http_proxy变量已设置,但它不适用于几个项目。其中一个是宝石。

如果你在〜/ .gemrc中放入以下内容,它将会起作用。

http_proxy:proxy-url:port

将proxy-url:port替换为您的代理地址和端口。在我添加之后,我运行了“bundle install”,一切都按预期运行。

答案 10 :(得分:0)

要让命令bundle install在Windows上使用代理,请执行以下操作:

  1. 编辑文件.gemrc。打开Windows命令行并键入:notepad %userprofile%\.gemrc
  2. 文件.gemrc在记事本中打开。在新行http_proxy: http://username:passwordEncodedWithUrlencode@proxyaddress:proxyport上输入。密码应使用urlencode进行编码。
  3. 关闭文件.gemrc并保存。