【问题标题】:Gotchas for writing rubygems编写 ruby​​gems 的陷阱
【发布时间】:2011-02-06 15:27:24
【问题描述】:

howwrite ruby​​gem 上有问题的答案,但是在编写rubygem 时应该避免什么?什么会给使用您的 ruby​​gem 的人带来问题?

【问题讨论】:

    标签: ruby rubygems


    【解决方案1】:

    Gem Packaging: Best Practices 提供了很多建议,其中包括

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

    • 不要将require 文件使用__FILE__

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

      VERSION = ::File.read(::File.join(::File.dirname(FILE), "..", "..", "VERSION")).strip

    • 不要在lib 内管理$LOAD_PATH

    • 提供一个VERSION 常量。

    • 不要依赖红宝石。使用您的代码的人可能没有使用 ruby​​gems,而是使用其他一些打包系统(或没有打包系统)。同样,不要在代码本身中提及版本依赖,或者rescue Gem::LoadError

    Rubygems dependencies. Please... 认为您不应该列出可选的运行时依赖项,并且应该将开发人员与运行时依赖项分开。

    From my own experience: 如果不出意外,请尝试在本地构建和安装您的 gem,然后再将其发布到野外。它避免了牛皮纸袋的泄漏。

    【讨论】:

    • 绝对是一篇不错且正确的文章,尤其是参考了“Gem Packaging: Best Practices”
    • 您的最后一点非常重要。它基本上可以改写为:“编写 Ruby Gems 的一个重要问题不是编写 Gems,而是编写库。”
    • @Jörg:非常像禅宗。 (最后一点来自“Gem Packaging:Best Practices”,而不是“From my own experience”)
    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 2012-05-10
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多