调试第三方gem的过程

时间:2016-12-30 22:05:39

标签: ruby rubygems rake bundler development-environment

使用guard-cucumber插件时,我发现它无法使用terminal-notifier-guard

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

一些重要标准是:

  1. 我想尽快开始跑步。
  2. 一旦我启动并运行,我希望能够尽快迭代。
  3. 我想尽可能少地改变我的项目。
  4. 我希望能够在版本控制中保留我的更改,以便我不会忘记它们。
  5. 如果我愿意,我希望能够获得有关我的更改的反馈。
  6. 我想在一个孤立的环境中测试我的变化。
  7. 我不想更改系统上安装的guard-cucumber gem。
  8. 这是我的过程:

    1. Fork项目并克隆它。
    2. 创建新分支
    3. 将名称更改为gemspec中的guard-cucumber-cats
    4. 在克隆的宝石中,做一些工作。
    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
    10. 根据标准思考流程:

      1. 起床和跑步并不算太差
      2. 迭代非常痛苦,每次我想测试更改时都不得不重新安装guard-cucumber-cats
      3. 在我的项目gemspec中更改一行似乎并不坏,但最好能够不做任何改动。
      4. git开头的所有好处都是一个巨大的优势
      5. github
      6. 也是如此
      7. 我没有使用vagrant或docker的工作流程设置,所以我的“隔离”测试环境基本上只是我的笔记本电脑上的。也许这是建立一个有效的集装箱发展环境的好机会?我不确定,但我现在的方式似乎不符合这个标准。
      8. 虽然重新命名gem然后将其安装在我的系统上似乎很尴尬,但我不需要更改机器上的实际guard-cucumber
      9. 理想情况下,我希望能够做到这样的事情:

        1. cp -r我的项目进入了一些沙盒环境
        2. 将分叉的guard-cucumber克隆到相同的沙盒环境
        3. 让一切“正常”
        4. 对克隆的guard-cucumber
        5. 进行处理
        6. 重复4次
        7. 我在another answer中读到只是开始编辑系统gem但不喜欢该解决方案,因为我失去了gitgithub的好处。

          是否有更好的流程适合您?或者我的流程可以改进哪些方面?

          此外,作为附注:这是nest code blocks in a list

          的方法

1 个答案:

答案 0 :(得分:1)

在项目的gemfile中使用$ git branch -a a/d abcd ac/cb accb * master $ git branch --list 'a*b' ac/cb accb $ git branch --list 'a[bc/]*' a/d abcd ac/cb accb $

您正在同时处理gem :path和项目my_gem。为了使这个无痛,请在项目的gemfile中使用它

my_project

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

甚至不需要重命名宝石。