第三方调试过程gem
Process for debugging a third-party gem
同时使用 guard-cucumber plugin I found it wasn't working with terminal-notifier-guard
找出问题所在并开始进行持久修复的最佳方法是什么?
一些重要的标准是:
- 我想尽快起床运行。
- 一旦我起来 运行 我希望能够尽可能快地迭代。
- 我想尽可能少地改变我的项目。
- 我希望能够在版本控制中保留我的更改,这样我就不会忘记它们。
- 如果需要,我希望能够获得有关我的更改的反馈。
- 我想在一个独立的环境中测试我的更改。
- 我不想更改系统上安装的
guard-cucumber
gem。
这是我的流程:
- Fork 项目并克隆它。
- 创建一个新分支
- 在 gem 规范中将名称更改为
guard-cucumber-cats
。
- 在克隆的 gem 中,做一些工作。
在我的 pry
工作附近添加一个断点:
require 'pry'
binding.pry
rake install
在我的机器上安装 guard-cucumber-cats
。
在我的项目中,将guard-cucumber-cats
添加为dep并在gemspec中注释掉guard-cucumber
。例如:
# spec.add_development_dependency "guard-cucumber", "~> 2.1.2"
spec.add_development_dependency "guard-cucumber-cats"
- 运行我的项目,调试,乱码。
- 重复 4-8
根据标准考虑流程:
- 起床 运行 还不错
- 迭代非常痛苦,每次我想测试更改时都必须重新安装
guard-cucumber-cats
很尴尬。
- 在我的项目中更改一行 gemspec 看起来不错,但是最好什么都不更改。
- 刚开始的
git
的所有好处是一个巨大的优势
github
也一样
- 我没有使用 vagrant 或 docker 的工作流程设置,所以我的 "isolated" 测试环境基本上只有我在我的笔记本电脑上。也许这是一个建立工作容器化开发环境的好机会?我不确定,但我现在的方式似乎不符合这个标准。
- 虽然必须重命名 gem 然后将其安装在我的系统上似乎很尴尬,但我不需要更改我机器上的实际
guard-cucumber
是很好的。
理想情况下,我希望能够执行以下操作:
cp -r
我的项目进入一些沙盒环境
- 将分叉的
guard-cucumber
克隆到相同的沙盒环境中
- 应有尽有"just work"
- 在克隆的
guard-cucumber
上工作
- 重复 4
我在 another answer 中读到刚开始编辑系统 gem 但不喜欢那个解决方案,因为我失去了 git
和 github
的好处。
是否有更适合您的流程?或者我的流程可以改进的地方?
此外,作为旁注:这就是您可以 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。
同时使用 guard-cucumber plugin I found it wasn't working with terminal-notifier-guard
找出问题所在并开始进行持久修复的最佳方法是什么?
一些重要的标准是:
- 我想尽快起床运行。
- 一旦我起来 运行 我希望能够尽可能快地迭代。
- 我想尽可能少地改变我的项目。
- 我希望能够在版本控制中保留我的更改,这样我就不会忘记它们。
- 如果需要,我希望能够获得有关我的更改的反馈。
- 我想在一个独立的环境中测试我的更改。
- 我不想更改系统上安装的
guard-cucumber
gem。
这是我的流程:
- Fork 项目并克隆它。
- 创建一个新分支
- 在 gem 规范中将名称更改为
guard-cucumber-cats
。 - 在克隆的 gem 中,做一些工作。
在我的
pry
工作附近添加一个断点:require 'pry' binding.pry
rake install
在我的机器上安装guard-cucumber-cats
。在我的项目中,将
guard-cucumber-cats
添加为dep并在gemspec中注释掉guard-cucumber
。例如:# spec.add_development_dependency "guard-cucumber", "~> 2.1.2" spec.add_development_dependency "guard-cucumber-cats"
- 运行我的项目,调试,乱码。
- 重复 4-8
根据标准考虑流程:
- 起床 运行 还不错
- 迭代非常痛苦,每次我想测试更改时都必须重新安装
guard-cucumber-cats
很尴尬。 - 在我的项目中更改一行 gemspec 看起来不错,但是最好什么都不更改。
- 刚开始的
git
的所有好处是一个巨大的优势 github
也一样
- 我没有使用 vagrant 或 docker 的工作流程设置,所以我的 "isolated" 测试环境基本上只有我在我的笔记本电脑上。也许这是一个建立工作容器化开发环境的好机会?我不确定,但我现在的方式似乎不符合这个标准。
- 虽然必须重命名 gem 然后将其安装在我的系统上似乎很尴尬,但我不需要更改我机器上的实际
guard-cucumber
是很好的。
理想情况下,我希望能够执行以下操作:
cp -r
我的项目进入一些沙盒环境- 将分叉的
guard-cucumber
克隆到相同的沙盒环境中 - 应有尽有"just work"
- 在克隆的
guard-cucumber
上工作
- 重复 4
我在 another answer 中读到刚开始编辑系统 gem 但不喜欢那个解决方案,因为我失去了 git
和 github
的好处。
是否有更适合您的流程?或者我的流程可以改进的地方?
此外,作为旁注:这就是您可以 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。