1

如何在不必将其包含在项目中的情况下为每个项目全局替换irbrails console替换?pry/pry-console

4

1 回答 1

1

简单模式是破解你的.irbrc,所以当任何尝试加载 IRB 时,你接管并强制它加载 Pry:

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

但是,如果您使用的是 Bundler,则仅当 Pry 在当前捆绑包中可用时,它仍然有效。


为了让它在 Bundler 认为不应该允许激活 Pry 时也能正常工作,你需要对 gem 加载进行猴子 - Bundler 非常努力地让它变得不可能。

为此,您需要一个文件,通过在/中~/.rubyrc.rb导出来确保始终为所有 ruby​​ 命令加载该文件。RUBYOPT=$HOME/.rubyrc.bashrc.zshrc

然后,该文件可以侵入 Bundler 的内部以强制加载非捆绑的 gem。您还可以使用 Monkey-patch Bundler.require,这是 Rails 加载 Gemfile 中所有 gem 的方式,以类似地强制pry-rails包含rails.

(此策略还允许您全局支持binding.pry,而无需明确要求任何内容,或将 gem 添加到项目中。)

于 2018-08-09T12:27:11.933 回答