首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么RubyMine 2018.2没有检测到我的宝石?

为什么RubyMine 2018.2没有检测到我的宝石?
EN

Stack Overflow用户
提问于 2018-10-24 22:38:18
回答 2查看 3.5K关注 0票数 3

我正在尝试调试RubyMine v2018.2 (2018.2.1,2018.2.4)中的Rails项目。当我启动编辑器时,我会收到一个警告:

RubyMine Gem : RubyMine检测到“项目”所需的一些宝石没有安装。

当我尝试运行RubyMine的Bundler安装命令时,有人告诉我

代码语言:javascript
复制
bash -c "RBENV_VERSION=2.5.0 /usr/bin/rbenv exec bundle install -V"
Activating bundler (< 2) failed:
Could not find 'bundler' (< 2) among 28 total gem(s)
Checked in 'GEM_PATH=/home/brad/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all', execute `gem env` for more information

To install the version of bundler this project requires, run `gem install bundler -v '< 2'`

...and当我试图从IDE运行或调试我的应用程序时,我被告知“找不到您的项目-path/gemfile.lock所需的bundler (版本)”。

为什么RubyMine不检测我安装的Gems?

我的环境

  • Ubuntu 18.04.01
  • zsh 5.4.2
  • rbenv 1.0.0
  • rbenv-binstubs @ 8ecb7ca8
  • Rubymine 2018.2.4

我使用rbenv来管理我的Ruby版本。系统安装了Ruby2.5.1,但我的项目依赖于2.5.0。我已经将2.5.0设置为rbenv全局版本。rbenv如何选择Ruby版本的配置似乎没有问题;我从非交互式命令中获得了以下结果:

代码语言:javascript
复制
> echo $RBENV_VERSION
(no response)

> cat ~/.rbenv/version
2.5.0

> rbenv global
2.5.0

在注意到rbenv在某些RubyMine命令中不能正常工作之后,我将eval "$(rbenv init -)"设置步骤从~/.zshrc移到~/.zshenv~/.profile,所以它也适用于bash和zsh登录shell(按照指导这里)。我现在正在获得交互和登录shell的匹配结果,但仍然可以从RubyMine中的Bundle安装命令中得到意想不到的行为。

什么在起作用

我的应用程序在交互式shell上安装、构建和运行都很好。

RubyMine的RubyMine的SDK设置正确地检测到rvm及其已安装的版本,以及该版本的所有已安装宝石。

我试过的

bundle install命令的输出声称它正在运行

代码语言:javascript
复制
bash -c "RBENV_VERSION=2.5.0 /usr/bin/rbenv exec bundle install"

当我从我的交互式shell或RubyMine的“运行任何东西”特性(登录shell)运行这个命令时,这个命令工作得很好--如下所示:

代码语言:javascript
复制
RBENV_VERSION=2.5.0 /usr/bin/rbenv exec bundle install
/usr/bin/rbenv exec bundle install
rbenv exec bundle install
bundle install

因此,我不知道RubyMine使用什么上下文来运行这个命令。从错误消息中可以清楚地看到,GEM_PATH是不正确的,导致RubyMine找错了邦德勒,但我不知道它是从哪里得到这个配置的。如果我在RubyMine中打开“RubyMine环境”视图,就会得到:

代码语言:javascript
复制
RUBYGEMS VERSION: 2.7.3
RUBY VERSION: 2.5.0 (2017-12-25 patchlevel 0) [x86_64-linux]
INSTALLATION DIRECTORY: /home/brad/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0
USER INSTALLATION DIRECTORY: /home/brad/.gem/ruby/2.5.0
RUBY EXECUTABLE: /home/brad/.rbenv/versions/2.5.0/bin/ruby
EXECUTABLE DIRECTORY: /home/brad/.rbenv/versions/2.5.0/bin
SPEC CACHE DIRECTORY: /home/brad/.gem/specs
SYSTEM CONFIGURATION DIRECTORY: /home/brad/.rbenv/versions/2.5.0/etc
RUBYGEMS PLATFORMS:
  ruby
  x86_64-linux
GEM PATHS:
   /home/brad/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0
   /home/brad/.gem/ruby/2.5.0
(...)
SHELL PATH:
   /home/brad/.rbenv/versions/2.5.0/bin
   /usr/lib/rbenv/libexec
   /home/brad/.rbenv/plugins/ruby-build/bin
   /home/brad/.rbenv/plugins/rbenv-gemset/bin
   /home/brad/.rbenv/plugins/rbenv-binstubs/bin
   (...rest of PATH...)
----------------------
IDE: RubyMine 2018.2.4, build #RM-182.4505.55
OS: Linux 4.15.0-38-generic[amd64]
Java: 1.8.0_152-release-1248-b8
RubyMine SDK Environment:
Sdk: rbenv: 2.5.0
Sdk Version: ver.2.5.0p0 ( revision 61468) p0
Ruby Interpreter: /home/brad/.rbenv/versions/2.5.0/bin/ruby
RVM Sdk: Rbenv sdk, gemset nullSdk Language Level: 2.5
Sdk Load Path:
     ~/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib
     ~/.rbenv/versions/2.5.0/lib/ruby/site_ruby/2.5.0
     ~/.rbenv/versions/2.5.0/lib/ruby/site_ruby/2.5.0/x86_64-linux
     ~/.rbenv/versions/2.5.0/lib/ruby/site_ruby
     ~/.rbenv/versions/2.5.0/lib/ruby/vendor_ruby/2.5.0
     ~/.rbenv/versions/2.5.0/lib/ruby/vendor_ruby/2.5.0/x86_64-linux
     ~/.rbenv/versions/2.5.0/lib/ruby/vendor_ruby
     ~/.rbenv/versions/2.5.0/lib/ruby/2.5.0
     ~/.rbenv/versions/2.5.0/lib/ruby/2.5.0/x86_64-linux
     ~/.local/share/JetBrains/Toolbox/apps/RubyMine/ch-0/182.4505.55/rubystubs25
Sdk Gem paths: 
     ~/.gem/ruby/2.5.0/gems
     ~/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/bundler/gems
     ~/.bundle/ruby/2.5.0/gems
     ~/.bundle/ruby/2.5.0/bundler/gems
     ~/.gem/ruby/2.5.0/bundler/gems
     ~/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems
(full list of gems used for project)

因此,我认为最后一点-- "Sdk路径“--可能是问题所在,但我看不出有任何方法来配置它。

我也已经知道了YouTrack的问题,家庭环境变量“,不认为这是怎么回事。它还声称是在2018.3 EAP1中修复的,所以我安装了2018.3 EAP7,但仍然看到了这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-25 16:45:12

我把东西弄好了!通过签到和回来。*面部表情:

具体来说,我认为关键的步骤是

  1. $(rbenv init -)步骤从.zshrc移动到我的.zshenv和/或.profile
  2. 签出去然后再回来。

关键的洞察力在于注意到,尽管在交互和登录shell中(在~/.rbenv/shims内外)都显示了RubyMine Gem环境中的内容,但它仍然没有出现,并意识到虽然新的shell正在收集我的.profile更改,但RubyMine本身可能继承了会话中的环境变量,我需要登录/登录才能获取更改。

现在我在我的~/.rbenv/shims Gem环境中看到了RubyMine,而Bundler安装命令和我的运行配置都再次工作。

谢谢卡斯珀为我指明了正确的方向!

票数 3
EN

Stack Overflow用户

发布于 2018-10-25 15:47:51

去过你以前很多次的地方。

在可以运行的脚本列表中,单击“编辑配置”。应该在主工具栏中。

在bundler选项卡上反复检查“在bundle (bundle Exec)上下文中运行脚本”。这是非常重要的,默认情况下不进行检查。确保您检查任何rake,rails或irb配置。

请记住,运行配置是您可以重写项目设置的地方。如果设置不当,就会产生各种各样的问题。

希望这能有所帮助!咬了我好多次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52978870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档