如何在不必将其包含在项目中的情况下为每个项目全局替换irb
和rails console
替换?pry/pry-console
问问题
741 次
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 回答