RubyMine 2018.2为什么无法检测到我的宝石?

时间:2018-10-24 22:38:19

标签: ruby bundler zsh rubymine rbenv

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

  

RubyMine宝石管理器:RubyMine已检测到未安装“ 项目”所需的某些宝石。

当我尝试运行RubyMine的Bundler安装命令时,会被告知

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'`

...,当我尝试从IDE中运行或调试应用程序时,系统提示我“找不到 project-path 所需的捆绑程序( version ) > /Gemfile.lock。”

为什么RubyMine无法检测到我安装的宝石?

我的环境

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

我正在使用rbenv来管理我的Ruby版本。系统已安装Ruby 2.5.1,但我的项目取决于2.5.0。我将2.5.0设置为rbenv全局版本。 how rbenv chooses a Ruby version的配置似乎可以;我从非交互式命令中得到以下结果:

> 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登录外壳(根据指南here)。现在,我获得了交互式外壳和登录外壳的匹配结果,但是仍然从RubyMine中的Bundle安装命令中得到了意外的行为。

什么在起作用

我的应用程序可以通过交互式外壳程序进行安装,构建和运行。

RubyMine的Ruby SDK设置可以正确检测rvm及其安装版本,以及该版本的所有已安装gem。

RubyMine Ruby SDK Settings

我尝试过的

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

bash -c "RBENV_VERSION=2.5.0 /usr/bin/rbenv exec bundle install"

当我从交互式外壳程序或RubyMine的“运行任何内容”功能(登录外壳程序)运行此命令时,此命令可以正常工作-可以执行以下任何操作:

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中调出“ RubyGems Environment”视图,我将得到:

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 Gem路径”可能是问题点,但是我看不到任何配置方法。

我也已经知道YouTrack问题"Rubymine 2018.2 release does not take $GEM_HOME environment variable",并且认为这不是正在发生的事情。它还声称已在2018.3 EAP1中修复,因此我安装了2018.3 EAP7,但仍然遇到此问题。

2 个答案:

答案 0 :(得分:1)

前几次,你都在哪里。

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

edit configuration

再次检查在捆绑程序选项卡上是否选中了“在捆绑程序的上下文中运行脚本(捆绑执行)”。这是超级重要的,默认情况下不选中。确保检查是否有任何耙,导轨或irb配置。

bundler context

请记住,可以在运行配置中覆盖项目的设置。如果设置不当,将会产生各种问题。

project SDK

希望这会有所帮助!咬我很多次。

答案 1 :(得分:1)

我的工作正常!通过注销并重新登录。:facepalm:

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

  1. $(rbenv init -)步骤从我的.zshrc移到我的.zshenv和/或.profile
  2. 退出并重新登录。

关键见解是注意到RubyMine Gem环境中缺少~/.rbenv/shims,尽管它同时出现在交互式和登录Shell中(在RubyMine内外),并且在 new 时意识到了这一点。 shell正在接受我的.profile更改,RubyMine本身可能正在从我的会话中继承其环境变量,因此我需要注销/登录以获取更改。

我现在在RubyMine Gem环境中看到~/.rbenv/shims,并且Bundler Install命令和运行配置都再次起作用。

感谢Casper为我指明正确的方向!