有写rubygems的问题

有关如何 编写 rubygems的答案存在疑问,但在编写rubygem时应该避免什么? 使用rubygem的人会有什么问题?

gem包装:最佳实践提供了很多建议,其中一些包括

  • 不要污染全局加载路径。 理想情况下,只在lib目录中有foo.rb ,并将所有其他文件放在lib/foo

  • require使用__FILE__文件。

  • 不要依赖负载路径之外的任何东西。 文件夹可能与原始版本的结构不同。 例如,不要使用类似的东西

    VERSION = :: File.read(:: File.join(:: File.dirname( FILE ),“..”,“..”,“VERSION”))。strip

  • 不要在lib管理$LOAD_PATH

  • 提供VERSION常量。

  • 不要依赖rubygems。 使用您的代码的人可能没有使用rubygems,而是使用其他一些包装系统(或没有包装系统)。 同样,不要在代码本身中提及版本依赖关系,也不要rescue Gem::LoadError

Rubygems依赖项。 请… …认为您不应列出可选的运行时依赖项,并应将开发人员与运行时依赖项分开。

根据我自己的经验 :如果没有别的,尝试在将它放入野外之前在本地构建和安装你的gem。 它避免了棕色纸袋的发布。