为什么RubyMine内置终端与iTerm2执行rails命令结果不一致?
从你给出的执行结果来看,iTerm2已经正常加载到了Rails 4.1.12版本,而RubyMine内置终端调用的是系统默认的Ruby环境,没有加载到你安装了rails的用户Ruby环境,触发该问题的核心原因有三个:
问题原因
- Shell配置加载逻辑差异
你用的Ruby版本管理器(RVM/rbenv/chruby等)的初始化脚本通常写在用户级Shell配置文件(如~/.zshrc/~/.bash_profile)中,iTerm2默认启动登录式交互式Shell,会完整加载这些配置,自动把对应Ruby版本的gem可执行路径加入PATH环境变量,所以能找到你安装的rails。
而RubyMine内置终端默认启动非登录式Shell,不会加载上述配置文件,PATH里只有系统自带的Ruby路径,找不到你在用户目录下安装的rails包,就会提示未安装。 - 项目Ruby SDK不匹配
如果RubyMine当前项目绑定的Ruby SDK,和iTerm2中全局激活的Ruby版本不一致,就算终端加载了配置,IDE也会强制覆盖PATH中的Ruby路径为指定SDK路径,若该SDK下没有安装rails也会触发报错。 - 环境变量继承异常
RubyMine内置终端启动时默认继承IDE的运行环境变量,可能会覆盖你自定义的PATH配置,优先使用IDE内置的Ruby环境路径。
解决方案
- 强制RubyMine终端启动登录式Shell:打开设置→工具→终端,Shell路径一栏如果是zsh用户填写
/bin/zsh --login,bash用户填写/bin/bash --login,同时勾选「继承系统环境变量」,保存后重启终端即可。 - 对齐项目Ruby SDK:打开文件→项目结构→项目,确认选择的SDK和iTerm2中执行
which ruby得到的版本路径一致,再到RubyMine的gem管理页确认该SDK下已安装对应版本的rails。 - 手动对齐
PATH:如果上述操作无效,分别在iTerm2和RubyMine终端执行echo $PATH,对比两份输出把iTerm2中独有的Ruby版本管理器相关的路径,手动添加到RubyMine终端的环境变量配置中即可。
内容的提问来源于stack exchange,提问作者iksflow
相关产品推荐
相关产品推荐

