【问题标题】:Install ruby gems offline / proxy configuration离线安装 ruby​​ gems / 代理配置
【发布时间】:2013-06-02 06:46:54
【问题描述】:

我需要在没有连接到互联网的服务器上安装 ruby​​ on rails + Nokogiri、httparty、json [和一些不太重要的 gems]。怎么可能做到?

主机操作系统是windows

还有一个问题,嗯,这对我来说不是很好,因为它可能需要几天时间,但我可以作为客户让这个服务器访问 http 代理。但是我必须承认,我已经尝试过使用类似的东西

set http_proxy="http://username:password@host:port"

gem --http_proxy "http://username:password@host:port"

但在这两种情况下都无法访问 gem 商店:(

【问题讨论】:

标签: ruby-on-rails ruby proxy gem


【解决方案1】:

我是这样解决的:

set http_proxy=host:port

没有任何引号,http:// 协议和用户名:密码。 干杯

【讨论】:

    【解决方案2】:

    这对我有用。

    gem install -p http://proxy_ip:proxy_port rails

    【讨论】:

      【解决方案3】:

      快速解决方案:

      gem install -p http://proxy_ip:proxy_port rails
      

      是一种快速且有效的方式,但我需要为每次安装提供永久性的东西。

      永久解决方案:

      1. 创建一个文件:

        vi ~/.gemrc
        
      2. 添加内容

        # HTTP Proxy options
        http_proxy: http://proxy_ip:proxy_port
        https_proxy: http://proxy_ip:proxy_port
        # For authentication (although not tested)
        http_proxy_user: username
        http_proxy_pass: password
        https_proxy_user: username 
        https_proxy_pass: password 
        
      3. 验证代理是否出现在 gem 环境变量中

        gem env
        

      RubyGems 环境: - 红宝石版本:2.5.2 - 红宝石版本:2.3.3(2016-11-21 补丁级别 222)[universal.x86_64-darwin17]

      【讨论】:

        【解决方案4】:

        导航到要安装的所需 gem 下载页面。例如,我试图安装 Sass,所以我搜索了一下并找到了sass 3.3.14。由于我在我的办公室代理后面,我单击 下载 链接并将 gem 下载到一个目录。

        接下来,通过 Ruby 命令行,使用 pushd D:\Setups 导航到安装目录并使用它:

        D:\Setups> gem install sass --local
        

        应该安装所需的gem。

        【讨论】:

        • 那么依赖项呢??
        【解决方案5】:

        您可以从 rubygems 下载您需要的所有 gem(还有依赖项)到您的服务器,
        然后运行 ​​gem install gem_name --local 来安装它们。

        【讨论】:

        • hefre 是下载所有依赖项的 gem 的简单方法/实用程序吗?
        • 同样的问题
        【解决方案6】:

        对于代理使用,Wolfbyte 的回答对我有用。我在 Debian 7 (Wheezy) 上运行。

        How do I update Ruby Gems from behind a Proxy (ISA-NTLM)

        我也会把他的答案贴在下面:

        我无法从命令行开关让我的工作,但我已经能够通过设置我的 HTTP_PROXY 环境变量来做到这一点(请注意,情况似乎很重要)。我有一个批处理文件,里面有这样一行:

        SET HTTP_PROXY=http://%USER%:%PASSWORD%@%SERVER%:%PORT%
        

        我在到达这一行之前设置了四个引用变量。举个例子,如果我的用户名是 wolfbyte,我的密码是秘密的,我的代理叫做 pigsy 并且在端口 8080 上运行:

        SET HTTP_PROXY=http://wolfbyte:secret@pigsy:8080
        

        您可能需要小心管理它,因为它会将您的密码以纯文本形式存储在机器的会话中,但我认为这应该不是什么大问题。


        此外,我的密码中包含有趣的字符 - 您必须按照以下方式进行 URLEncode: http://www.cyberciti.biz/faq/unix-linux-export-variable-http_proxy-with-special-characters/

        希望这会有所帮助!

        科林

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-09
          相关资源
          最近更新 更多