首页 > 解决方案 > 如何为所有项目全局安装 pry/pry-rails?

问题描述

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

标签: ruby-on-railsrubyprypry-rails

解决方案


简单模式是破解你的.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 添加到项目中。)


推荐阅读