gpt4 book ai didi

ruby - 为什么 RubyMine 2018.2 检测不到我的 gem ?

转载 作者:行者123 更新时间:2023-12-04 01:51:13 34 4
gpt4 key购买 nike

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

RubyMine Gem Manager: RubyMine has detected that some of the gems required for 'project' are not installed.

当我尝试运行 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 运行或调试我的应用程序时,我被告知“找不到您的项目路径版本) >/Gemfile.lock。”

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

我的环境

  • Ubuntu 18.04.01
  • zsh 5.4.2
  • rbenv 1.0.0
  • rbenv-binstubs @ 8ecb7ca8
  • ruby 矿 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 登录 shell(根据指南 here )。我现在获得了交互式和登录 shell 的匹配结果,但仍然从 RubyMine 中的 Bundle install 命令获得了意外行为。

什么在起作用

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

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

RubyMine Ruby SDK Settings

我尝试过的

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

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

当我从我的交互式 shell 或使用 RubyMine 的“运行任何东西”功能(登录 shell)运行此命令时,此命令工作正常 - 如下任何一项一样:

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 在错误的位置查找 bundler,但我不知道它从哪里获得此配置。如果我在 RubyMine 中调出“RubyGems 环境” View ,我会得到:

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,但仍然看到这个问题。

最佳答案

我开始工作了!通过注销并重新登录。:facepalm:

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

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

关键的见解是注意到 ~/.rbenv/shims 在 RubyMine Gem 环境中丢失了,尽管它出现在交互和登录 shell 中(在 RubyMine 内外),并且意识到虽然 shell 正在获取我的 .profile 更改,RubyMine 本身可能从我的 session 中继承了它的环境变量,我需要注销/登录才能获取变化。

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

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

关于ruby - 为什么 RubyMine 2018.2 检测不到我的 gem ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52978870/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com