Docs header transparent bg

Bundler 开发设置

要参与 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

在开发 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/bundleRUBYOPT=-rpry ruby /path/to/bundle 相同。

因此,RUBYOPT=-rpry dbundle 表示“加载 pry 并加载此 Bundler 路径”,这意味着您将使用 pry 和您的本地 bundler 启动开发环境。

为什么需要这样做? 为什么 require 'pry'; binding.pry 不够?

RUBYOPTdbundle结合的原因是Bundler接管了可用的gem。如果你在机器上安装了pry,但没有将其包含在Gemfile中,Bundler本身会从你可以要求的gem列表中删除pry。设置RUBYOPT=-rpry是一种在Bundler接管并将其从可要求的gem列表中删除之前要求pry的方法。这样,你就可以在以后利用binding.pry并使其正常工作。不幸的是,如果你等到binding.pryrequire 'pry',那么只要pry不在Gemfile中,它就会失败。