描述用于语义版本控制的ruby gem公共API
Semantic Versioning Specification中的第一点指出兼容软件必须声明一个公共API.
我想知道宝石是如何建立这个公共API的.看起来它通常是通过自述文件完成的(例如,见ActiveRecord),它不会在公共API代码和其他代码之间划出严格的界限.更好地执行此操作的gem的一个示例是Twitter API,将其公共API代码放在API directory中,但即使在那里,该行也是灰色的,因为公共API的configure方法在twitter.rb中定义,位于API目录之外. 作为一个试图坚持语义版本控制的宝石的潜在贡献者(其中大部分都是假设我们有像bundler这样的工具),我想知道哪些方法是公共API的一部分,哪些不是.也许我必须查看更多的源代码,但有没有明确定义您的公共API的指导方针? 解决方法
有一些流行的方法来定义公共API.你选择哪一个主要是品味问题.
一种方法是文档.您只需在文档中说明哪些协议是公共API的一部分,以及这些协议的合同是什么. YARD甚至为此预定义了标签. 另一种方法是测试.我认为Merb做到了这一点.公共API在其RSpec测试中有所描述.私有部分显然也经过了测试,但这些测试都存在于不同的目录中. 这实际上非常酷,因为它允许您将代码更改和语义版本更改联系在一起:每次将测试添加到公共目录时,您都需要碰撞次要版本.每次删除或修改公共目录中的测试时,都需要修改主要版本. 或者反过来说:在次要修订期间,不允许更改或删除测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |