ruby - 安装了新版本的 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 永远不会被应用,对吧?
解决方案
在高层次上,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
你可以阅读这个问题。
推荐阅读
- node.js - 节点命令(节点 App.js)在 Visual Studio 代码中不起作用
- c# - 按下按钮时在 MVC 中加载数据
- python-3.x - 附加列表项会创建重复项
- python - 如何使用 Python 通过 Strava API 访问身份验证?
- ruby - 如何在 Github 工作流上运行 Ruby 脚本
- reactjs - React-hook-form 输入字段匹配验证最佳实践
- flutter - 将 Python 与 Flutter 连接以实现基于 Web 的解决方案
- mysql - 如何在 Where In Query (Mysql) 中为每个项目获取相等的行数
- django - 是否可以包装 Django 代码以确保 ORM 的所有数据库访问默认设置为“使用”?
- node.js - 在 NodeJS 中检测 GRPC 服务器故障