ruby-on-rails - 如何为所有项目全局安装 pry/pry-rails?
问题描述
如何在不必将其包含在项目中的情况下为每个项目全局替换irb
和rails console
替换?pry/pry-console
解决方案
简单模式是破解你的.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 添加到项目中。)
推荐阅读
- javascript - transform:scale() 使右下角的元素消失
- angular - OSM中是否有任何缓存设置?
- javascript - api调用Angular 8后PatchForm不起作用
- sql - 将我的列转换为 postgresql 中的行而不创建任何扩展
- python - 使用 matplotlib 和 seaborn 生成和绘制高斯混合
- angular - Asp.Net核心角度验证和提交表单不起作用
- dynamics-crm - Dynamics 365 Developer Toolkit 错误:由于网络中断而无法加载实体
- php - 无法使用 php7 安装 phalcon ubuntu 19.10
- jquery - d3.js 树 - 选择叶节点列表返回树中的所有节点,而不仅仅是选定的节点项
- android - 是否可以在不生根设备的情况下以编程方式触摸屏幕上的事件?