Почему RubyMine 2018.2 не обнаруживает мои драгоценные камни? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь отладить проект Rails в RubyMine v2018.2 (2018.2.1, 2018.2.4).Когда я запускаю редактор, я получаю предупреждение:

RubyMine Gem Manager: RubyMine обнаружил, что некоторые из гемов, необходимых для ' project ', не установлены.

Когда я пытаюсь запустить команду установки 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 не обнаруживает мои установленные Gems?

Моя среда

  • 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.Конфигурация для как rbenv выбирает версию Ruby , кажется, все в порядке;Я получаю следующие результаты от неинтерактивных команд:

> 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 (согласно указаниям здесь ).Сейчас я получаю совпадающие результаты для интерактивных оболочек и оболочек входа в систему, но все еще получаю неожиданное поведение от команды Bundle install в RubyMine.

Что работает

Мое приложение отлично устанавливается, собирается и работаетиз интерактивной оболочки.

Параметры RubyMine RubyMine правильно определяют rvm и его установленные версии, а также все установленные гемы для этой версии.

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 ищет неправильное место для компоновщика, но я не знаю, откуда он получает эту конфигурацию.Если я открою представление «Среда RubyGems» в RubyMine, я получу:

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 не используется переменная окружения $ GEM_HOME" и не думаю, что это именно то, что здесь происходит.Он также утверждает, что исправлен в EAP1 2018.3, поэтому я установил EAP7 2018.3, но все еще вижу эту проблему.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

У меня все работает!Выйдя и вернувшись.: Facepalm:

Если быть точным, я думаю ключевые шаги были

  1. Переместить шаг $(rbenv init -) от моего .zshrc до моего .zshenv и / или до .profile
  2. Выход из системы и обратно.

Ключевым моментом было то, что ~/.rbenv/shims отсутствовал в RubyMineСреда Gem несмотря на то, что она отображалась как в интерактивных оболочках, так и в оболочках входа в систему (в RubyMine и из RubyMine) и понимала, что в то время как новые оболочки воспринимали мои .profile изменения, сам RubyMine, вероятно, наследовал свои переменные среды от моегосеанса, и мне нужно было выйти / войти, чтобы забрать изменения.

Теперь я вижу ~/.rbenv/shims в моей среде RubyMine Gem, и команда Bundler Install, и мои конфигурации запуска снова работают.

Спасибо Каспер за указание мне в правильном направлении!

0 голосов
/ 25 октября 2018

Вы были там, где находились до этого несколько раз.

В списке сценариев, которые вы можете запустить, нажмите «Редактировать конфигурации».Должно быть на главной панели инструментов.

edit configuration

Дважды проверьте, что у вас установлен флажок «Запускать скрипт в контексте связки (bundle exec)» на вкладке связки.Это очень важно и не проверяется по умолчанию.Убедитесь, что вы проверили любые грабли, рельсы или конфигурации irb.

bundler context

Имейте в виду, что конфигурация прогона - это место, где вы можете переопределить настройки для проекта.Это создаст все виды проблем, если это не установлено должным образом.

project SDK

Надеюсь, это поможет!Укусил меня несколько раз.

...