ruby on rails - 环境变量

时间:2016-10-17 12:22:36

标签: ruby-on-rails

环境变量

在cmd中运行命令后在Windows中安装rails后,会出现错误

系统无法找到指定的路径

第二,当我在cmd中运行命令时,会出现错误

  

错误:找不到有效的宝石'铁路' < = 4.2.3>这就是为什么:

     

无法从https://rubygems.org/ - SSL_connect下载数据   返回= 1 errorno = 0 state = SSLv3读取服务器证书B:   证书验证失败https://api.rubygems.org/specs.4.8.gz

3 个答案:

答案 0 :(得分:1)

您可能在为https网站创建虚假证书的公司代理背后,以便它可以嗅探https流量。这通常有效的原因是您将公司证书作为客户的受信任根证书,但它对Gem不起作用,因为它使用证书固定。

解决方案是

  • 将公司证书添加到Gem可信证书:SET SSL_CERT_FILE=c:\your\company\cert.pem
  • 将Gemfile中的Gem源更改为http而不是https(source 'https://rubygems.org'改为source 'http://rubygems.org'
  • 关闭证书验证(将:ssl_verify_mode: 0添加到位于%USERPROFILE%\.gemrc的Windows上的gemrc文件中)

请注意,如果您将gem源更改为http或关闭证书验证,攻击者可能会篡改下载的gem(将内容更改为任意代码)。你通常不应该这样做。

答案 1 :(得分:0)

转到命令提示符,然后输入以下行。

gem sources -r https://rubygems.org/

gem sources -a http://rubygems.org/,之后输入y

然后您应该可以安装gem

答案 2 :(得分:0)

对于安装了PowerShell的Windows

安装Windows PowerShell

将此1行代码粘贴到命令控制台中:(WIN + R,cmd)

powershell -Command "& {$fname='cacert.pem'; $outpath=\"$($(Get-ChildItem Env:USERPROFILE).Value)/$fname\"; Invoke-WebRequest http://curl.haxx.se/ca/$fname -OutFile \"$outpath\"; [Environment]::SetEnvironmentVariable('SSL_CERT_FILE', \"$outpath\", 'User')}"

脚本可以:

  1. 下载http://curl.haxx.se/ca/cacert.pem

  2. 将其另存为%USERPROFILE%/cacert.pem ( C:\Users\__you__\cacert.pem)

  3. 将当前用户SSL_CERT_FILE的持久性环境变量设置为%USERPROFILE%/cacert.pem

  4. 此后尝试安装gem