【问题标题】:new version of rails installed, rails command not recognized安装了新版本的 rails,rails 命令无法识别
【发布时间】:2018-12-26 02:31:50
【问题描述】:

我想做一个新的 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"

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

【问题讨论】:

  • gem install rails?
  • Rails 是一颗宝石。 Gems 安装在 ruby​​ 版本中。如果您下载了全新的 ruby​​ 版本,您将不会拥有任何宝石。 Rails 尚未安装。
  • " 为什么 rbenv local 不工作" -- 我不知道...你能给我们一个提示吗?可能是错误消息或行为描述?
  • gem install rails 就是答案。 2问题,我在文件夹中运行命令rbenv local,没有任何反应:~/Local_Documents/CodingArea/personal_projects/zaina-project/zaina_deal_room/zaina-dealroom   setup  ruby​​ -v ruby​​ 2.3.5p376 (2017-09- 14 修订版 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 修订版 59905)[x86_64-darwin16]

标签: ruby rbenv


【解决方案1】:

在高层次上,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,您可以阅读this question

【讨论】:

  • 我读了另一个问题。在我的 .zshrc 中,我有:export RBENV_VERSION=2.3.5,这就是 rbenv local 不起作用的原因。在 ENV 变量中包含 ruby​​ 版本是错误的吗?我也有:export RBENV_VERSION=2.3.5 # 使用 rbenv rehash export ALBERT=8 export PATH="$HOME/.rbenv/bin:$PATH:./node_modules/.bin"
  • is it wrong to have the ruby version in the ENV variables? 不,环境变量很容易更改。所以,这不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2020-05-21
  • 2020-12-16
  • 2016-02-28
相关资源
最近更新 更多