为什么我无法安装 rails?

Why can't I install rails?

每当我尝试遵循 this 时,在第 6 步我输入代码但不会安装,它只会在命令行中告诉我以下内容。

Could not find a valid gem 'rails' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

我是命令行的新手,我完全不知道这意味着什么或为什么它不允许我安装 rails。有人可以帮忙吗?

我还应该添加,当我尝试检查 ruby 的版本时,它会给我正确的版本。但是当我尝试检查 rails 时,我得到了。

C:\Sites>rails -v
The system cannot find the path specified.

更新

使用 Windows 10

Ruby 版本 2.2.4

我不知道如何判断防火墙是否阻止了我

使用家庭网络

我刚刚尝试 运行 这个:

C:\Sites>gem update --system
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

C:\Sites>gem install rails
ERROR:  Could not find a valid gem 'rails' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

当我转到 rails 环境配置时,我注意到它没有显示 rails 的版本号,而是显示了一个 bat 文件。

ruby:
  bin:        C:/RailsInstaller/Ruby2.0.0/bin/ruby.exe
  version:    ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]

rails:
  bin:        C:/RailsInstaller/Ruby2.0.0/bin/rails.bat
  version:

您可以按照以下步骤操作:

1. gem sources -a http://rubygems.org
2. gem install rails

作为解决方法,您可以尝试在 Gemfile 中替换

source 'https://rubygems.org'

source 'http://rubygems.org'

这样 SSL 连接错误就消失了。这段代码位于 Gemfile

的顶部

注意 - 您收到 MITM(中间人)攻击警告,因为您使用的是 HTTP,而不是 HTTPS(已加密)。这应该没问题,这只是一个警告,不太可能发生任何实际攻击。要消除此警告,请按照步骤 Here

或者,您可以简单地 运行 gem sources -a http://rubygems.org 以便您的 gem(包括 rails 5.0.0.1 gem)通过 http 下载而不是 https

尽管如此,如果您想通过 SSL 使用加密下载,请按照 GitHub 上的 this guide 引导您完成安装证书的过程以信任 RubyGems.org

这是为了修复 windows
中的 ssl 错误 1) 下载 certificate
2) 保存到 C:/RailsInstaller/Ruby2.0.0/ssl_certs/GlobalSignRootCA.pem
3) 创建环境变量 SSL_CERT_FILE 将其设置为 C:/RailsInstaller/Ruby2.0.0/ssl_certs/GlobalSignRootCA.pem 4) 然后 gem 安装 rails

所以我做了以下并解决了问题(貌似)

对于 Windows 安装了 PowerShell

正在安装 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