要参与 Bundler 的开发,您可能需要做以下几件事
Fork Rubygems 代码仓库,并将 fork 克隆到您的机器上。(请参考此教程了解 fork 代码仓库的步骤。)
使用您的包管理器安装 graphviz 包
sudo apt-get install graphviz -y
对于 OS X(已安装 brew)
brew install graphviz
从 rubygems 根目录安装开发依赖项和 Bundler 的测试依赖项
bin/rake setup spec:parallel_deps
切换到 bundler 目录
cd bundler
现在您可以并行运行测试套件
bin/parallel_rspec
设置一个 shell 别名,以便从您的克隆运行 Bundler,例如 Bash 别名(请参考这些说明了解如何将别名添加到您的 ~/.bashrc 配置文件。)
alias dbundle='ruby /path/to/bundler/repo/spec/support/bundle.rb'
在开发 Bundler 功能或需要更改 RubyGems 的 bug 修复时,您可以通过将 RGV 环境变量设置为指向代码仓库的根目录来确保 Bundler 的测试套件拾取这些更改,例如
RGV=.. bin/parallel_rspec
最好确保您的更改始终针对最新的 RubyGems 工作,因此永久设置此变量可能是一个好主意。您可以使用 direnv 来实现这一点。
RGV 环境变量也可以设置为任意 RubyGems 版本,以确保您在 Bundler 中的更改与这些版本兼容。例如,
RGV=v3.2.33 bin/parallel_rspec
pry 调试要使用 Pry 深入代码:RUBYOPT=-rpry dbundle 以加载 pry,然后运行命令。
背景信息:您可以操作 Ruby 中的环境变量来控制 Ruby 解释器的行为。Ruby 使用 RUBYOPT 环境变量来指定启动 Ruby 时使用的选项。
RUBYOPT 的参数就像您在 ruby 后面键入标志一样应用。-r 标志表示“require”。因此,-rpry 表示 require 'pry'。为了说明,ruby -rpry /path/to/bundle 与 RUBYOPT=-rpry ruby /path/to/bundle 相同。
因此,RUBYOPT=-rpry dbundle 表示“加载 pry 并加载此 Bundler 路径”,这意味着您将使用 pry 和您的本地 bundler 启动开发环境。
为什么需要这样做? 为什么 require 'pry'; binding.pry 不够?
将RUBYOPT与dbundle结合的原因是Bundler接管了可用的gem。如果你在机器上安装了pry,但没有将其包含在Gemfile中,Bundler本身会从你可以要求的gem列表中删除pry。设置RUBYOPT=-rpry是一种在Bundler接管并将其从可要求的gem列表中删除之前要求pry的方法。这样,你就可以在以后利用binding.pry并使其正常工作。不幸的是,如果你等到binding.pry才require 'pry',那么只要pry不在Gemfile中,它就会失败。