Home Articles

如何在代理后面使用bundler?

Asked
Viewed 1975 times
51

我从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 =我的代理到〜/ .gemrc . 这些设置允许我的gem命令工作,我希望他们会转换为bundler,但没有这样的运气 .

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

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

11 Answers

  • 69

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

    如果你在〜/ .gemrc中放入以下内容就行了 .

    http_proxy:proxy-url:port

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

  • 15

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

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

    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%
    
  • 3

    Windows操作系统,在执行 bundle install 之前运行以下命令

    SET http_proxy=http://user:password@host:port
    
  • 3
    $ 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/

  • 3

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

    • 编辑文件 .gemrc . 打开Windows命令行并键入: notepad %userprofile%\.gemrc .

    • 文件.gemrc在记事本中打开 . 在新行 http_proxy: http://username:passwordEncodedWithUrlencode@proxyaddress:proxyport 上输入 . 密码应使用urlencode进行编码 .

    • 关闭文件.gemrc并保存它 .

  • 1

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

  • 0

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

    export HTTP_PROXY=$http_proxy
    

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

    sudo -E bundle install
    

    贵族

  • 0

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

    我将http_proxy添加到Environment Variables中

    • 我的电脑

    • 高级系统设置

    • 高级选项卡环境

    • 变量

    • 变量名= http_proxy

    • 变量值= MY_PROXY

    • 单击“确定”

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

    这适用于捆绑商 . .gemrc代理设置仅适用于gem .

    谢谢杰米

  • 0

    如果您不想在系统中设置全局变量,可以编辑〜/ .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
    
  • 0

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

    echo $http_proxy
    

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

Related