第三方调试过程gem

Process for debugging a third-party gem

同时使用 guard-cucumber plugin I found it wasn't working with terminal-notifier-guard

找出问题所在并开始进行持久修复的最佳方法是什么?

一些重要的标准是:

  1. 我想尽快起床运行。
  2. 一旦我起来 运行 我希望能够尽可能快地迭代。
  3. 我想尽可能少地改变我的项目。
  4. 我希望能够在版本控制中保留我的更改,这样我就不会忘记它们。
  5. 如果需要,我希望能够获得有关我的更改的反馈。
  6. 我想在一个独立的环境中测试我的更改。
  7. 我不想更改系统上安装的 guard-cucumber gem。

这是我的流程:

  1. Fork 项目并克隆它。
  2. 创建一个新分支
  3. 在 gem 规范中将名称更改为 guard-cucumber-cats
  4. 在克隆的 gem 中,做一些工作。
  5. 在我的 pry 工作附近添加一个断点:

    require 'pry'
    binding.pry
    
  6. rake install 在我的机器上安装 guard-cucumber-cats

  7. 在我的项目中,将guard-cucumber-cats添加为dep并在gemspec中注释掉guard-cucumber。例如:

    # spec.add_development_dependency "guard-cucumber", "~> 2.1.2"
    spec.add_development_dependency "guard-cucumber-cats"
    
  8. 运行我的项目,调试,乱码。
  9. 重复 4-8

根据标准考虑流程:

  1. 起床 运行 还不错
  2. 迭代非常痛苦,每次我想测试更改时都必须重新安装 guard-cucumber-cats 很尴尬。
  3. 在我的项目中更改一行 gemspec 看起来不错,但是最好什么都不更改。
  4. 刚开始的 git 的所有好处是一个巨大的优势
  5. github
  6. 也一样
  7. 我没有使用 vagrant 或 docker 的工作流程设置,所以我的 "isolated" 测试环境基本上只有我在我的笔记本电脑上。也许这是一个建立工作容器化开发环境的好机会?我不确定,但我现在的方式似乎不符合这个标准。
  8. 虽然必须重命名 gem 然后将其安装在我的系统上似乎很尴尬,但我不需要更改我机器上的实际 guard-cucumber 是很好的。

理想情况下,我希望能够执行以下操作:

  1. cp -r 我的项目进入一些沙盒环境
  2. 将分叉的 guard-cucumber 克隆到相同的沙盒环境中
  3. 应有尽有"just work"
  4. 在克隆的 guard-cucumber
  5. 上工作
  6. 重复 4

我在 another answer 中读到刚开始编辑系统 gem 但不喜欢那个解决方案,因为我失去了 gitgithub 的好处。

是否有更适合您的流程?或者我的流程可以改进的地方?

此外,作为旁注:这就是您可以 nest code blocks in a list

在项目的 gem 文件中使用 :path

您同时在 gem my_gem 和项目 my_project 上工作。为了使这个无痛,请在项目的 gem 文件中使用它

# in /path/to/my_project/Gemfile
...

gem 'my_gem', :path => '/path/to/my_gem'

...

然后您可以迭代,而不必一直构建 gem。

甚至不需要重命名 gem。