首页 > 解决方案 > 安装了新版本的 rails,rails 命令无法识别

问题描述

我想做一个新的 Rails 应用程序。我安装了 ruby​​ 2.4.4,因为我克隆了一个项目。

我曾经为项目设置新版本

rbenv shell 2.4.4

因为 rbenv local 不工作

现在我正在使用 ruby​​ 2.4.4

  system
  2.3.4
  2.3.5
* 2.4.4 (set by RBENV_VERSION environment variable)

我收到以下错误消息:

rbenv: rails: command not found

The `rails' command exists in these Ruby versions:
  2.3.4
  2.3.5

1)我该如何解决这个问题?2) 为什么 rbenv local 不工作?

运行 rbenv local 2.4.4 时会发生什么

 ~/Local_Documents/CodingArea/personal_projects/zaina-project/zaina_deal_room/zaina-dealroom   setup  ruby -v
ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-darwin16]
 ~/Local_Documents/CodingArea/personal_projects/zaina-project/zaina_deal_room/zaina-dealroom   setup  rbenv local 2.4.4
 ~/Local_Documents/CodingArea/personal_projects/zaina-project/zaina_deal_room/zaina-dealroom   setup  ruby -v
ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-darwin16]

基本上它什么也没发生。仍选择 Ruby 版本 2.3.5。在运行 rbenv local 2.4.4 之后,我希望看到版本 2.4.4。我想这是我的 ENV 的问题,我在文件中编写的版本需要偏好,但我不知道如何解决这个问题。

在我的 .zshrc 我有:

export RBENV_VERSION=2.3.5 # use rbenv rehash
export ALBERT=8
export PATH="$HOME/.rbenv/bin:$PATH:./node_modules/.bin"

那里有红宝石版本是错误的吗?我的路径正确吗?那么,由于 export RBENV_VERSION,rbenv local 2.4.4 永远不会被应用,对吧?

标签: rubyrbenv

解决方案


在高层次上,rbenv 使用注入 PATH 的 shim 可执行文件拦截 Ruby 命令,确定您的应用程序指定了哪个 Ruby 版本,并将您的命令传递给正确的 Ruby 安装。

当您运行 ruby​​ 或 rake 之类的命令时,您的操作系统会搜索目录列表以查找具有该名称的可执行文件。此目录列表位于名为 PATH 的环境变量中,列表中的每个目录都由冒号分隔:/usr/local/bin:/usr/bin:/bin

一旦 rbenv 确定了您的应用程序指定了哪个版本的 Ruby,它会将命令传递给相应的 Ruby 安装。

每个 Ruby 版本都安装到 ~/.rbenv/versions 下自己的目录中。例如,您可能安装了以下版本:~/.rbenv/versions/1.8.7-p371/

因此,对于每个 ruby​​ 版本,您必须安装两个 gem:

gem install bundler
gem install rails

关于如何解决rbenv你可以阅读这个问题


推荐阅读