我正在尝试在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无法检测到我安装的宝石?
我正在使用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。
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,但仍然遇到此问题。
答案 0 :(得分:1)
前几次,你都在哪里。
在可以运行的脚本列表下,单击“编辑配置”。应该在主工具栏中。
再次检查在捆绑程序选项卡上是否选中了“在捆绑程序的上下文中运行脚本(捆绑执行)”。这是超级重要的,默认情况下不选中。确保检查是否有任何耙,导轨或irb配置。
请记住,可以在运行配置中覆盖项目的设置。如果设置不当,将会产生各种问题。
希望这会有所帮助!咬我很多次。
答案 1 :(得分:1)
我的工作正常!通过注销并重新登录。:facepalm:
具体来说,我认为关键步骤是
$(rbenv init -)
步骤从我的.zshrc
移到我的.zshenv
和/或.profile
关键见解是注意到RubyMine Gem环境中缺少~/.rbenv/shims
,尽管它同时出现在交互式和登录Shell中(在RubyMine内外),并且在 new 时意识到了这一点。 shell正在接受我的.profile
更改,RubyMine本身可能正在从我的会话中继承其环境变量,因此我需要注销/登录以获取更改。
我现在在RubyMine Gem环境中看到~/.rbenv/shims
,并且Bundler Install命令和运行配置都再次起作用。
感谢Casper为我指明正确的方向!