Как установить pry/pry-rails глобально для всех проектов?

Как заменить irb и rails console на pry/pry-console глобально для каждого проекта, не включая его в проект?


person Bhushan Lodha    schedule 09.08.2018    source источник
comment
Эх. Установите его глобально и вызовите pry вместо irb. Я сомневаюсь, что можно было бы войти в сеанс оболочки pry из кода, вызвав binding.pry без соответствующего гемсета для явной установки pry.   -  person Aleksei Matiushkin    schedule 09.08.2018


Ответы (1)


Простой режим заключается в том, чтобы взломать ваш .irbrc, чтобы, когда что-то пытается загрузить IRB, вы вступали во владение и заставляли его вместо этого загружать Pry:

begin
  gem "pry"
rescue => ex
  $stderr.puts ex.message
else
  require "pry"
  Pry.start
  exit!
end

Однако если вы используете Bundler, это все равно будет работать, только если Pry доступен в текущем пакете.


Чтобы заставить его работать, даже если Бандлер не считает, что Pry нужно активировать, вам придется повозиться с загрузкой гема — Бандлер очень старается сделать это невозможным.

Для этого вам понадобится файл ~/.rubyrc.rb, который всегда загружается для всех команд ruby, экспортируя RUBYOPT=$HOME/.rubyrc в файл .bashrc/.zshrc.

Затем этот файл может взломать внутренности Bundler, чтобы принудительно загрузить несвязанный гем. Вы также можете изменить Bundler.require, чтобы Rails загружал все гемы в Gemfile, чтобы аналогичным образом принудительно использовать pry-rails в любом приложении, содержащем rails.

(Эта стратегия также позволяет вам глобально поддерживать binding.pry без необходимости чего-либо явно требовать или добавлять гем в проект.)

person matthewd    schedule 09.08.2018
comment
Любая дополнительная информация о необходимых дополнительных хаках? Это работает для текущих рельсов? - person justingordon; 05.02.2021