должен ли exec bundle найти глобальный драгоценный камень? - PullRequest
0 голосов
/ 05 июня 2019

конфигурация запуска кода Visual Studio (не очень важно) пытается запустить rdebug-ide через

bundle exec rdebug-ide

Это работает, только если я добавлю драгоценные камни в Gemfile.

Предполагается ли, что bundle exec находит только двоичные файлы, включенные в Gemfiles, или если они установлены глобально, например, gem install rdebug-ide, также быть доступным из комплекта exec?

Так что это работает:

> rdebug-ide
Using ruby-debug-base 0.2.2 ...

но это не

> bundle exec rdebug-ide
Gem::Exception: can't find executable rdebug-ide for gem ruby-debug-ide. ruby-debug-ide is not currently included in the bundle, perhaps you meant to add it to your Gemfile?

и даже это работает!

> bundle exec ls
Gemfile app ...

Дополнительная информация: я использую rbenv, возможно, это как-то влияет на поведение компоновщика

UPDATE

@ tadman указал, что bundle exec изменяет путь. Но, как я и ожидал, кажется, что он расширяет его, ничего не удаляя

$ diff <(gem env) <(bundle exec gem env)
24a25
>      - /Users/eng/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/bin

$ which rdebug-ide
/Users/eng/.rbenv/shims/rdebug-ide

$ bundle exec rdebug-ide
bundler: failed to load command: rdebug-ide 
(/Users/eng/.rbenv/versions/2.5.3/bin/rdebug-ide)
Gem::Exception: can't find executable rdebug-ide for gem ruby-debug-ide. ruby-debug-ide is not currently included in the bundle, perhaps you meant to add it to your Gemfile?

Более того, там находится путь:

 $ bundle exec gem env | grep $(dirname $(which rdebug-ide))
 - /Users/eng/.rbenv/shims

Я склонен думать, что rbenv как-то все портит.

1 Ответ

0 голосов
/ 05 июня 2019

bundle exec делает ряд вещей, в первую очередь изменяя среду Gem, но самое главное, это изменяет ваш поиск PATH для исполняемых файлов.

Многие, такие как ls, существующие за пределами Ruby, все равно будут присутствовать, но исполняемые файлы gem могут быть выбиты, если они не включены в Gemfile.

Проверьте с помощью:

bundle exec gem env

И сравните с:

gem env

В разделе «SHELL PATH» вы увидите ряд изменений.

...