创建自己的 RubyGems:从入门到精通
1. 库存根的作用与局限
库存根(stub)将所有 RubyGems 特定的代码集中在一处,这样依赖库的源代码就无需包含 RubyGems 代码。 require_gem
调用会加载 gem 维护者指定的自动加载库文件。从 RubyGems 0.7.0 版本开始,存根安装默认启用,安装时可使用 --no-install-stub
选项禁用。不过,使用库存根的最大缺点是会失去 RubyGems 管理同一库多个已安装版本的能力。若需要特定版本的库,建议使用之前介绍的 LoadError
方法。
2. 创建自己的 gem
RubyGems 为应用或库的用户提供了便利,现在我们来学习如何创建自己的 gem。假设你完成了母亲的在线日记应用 MomLog,并决定以开源许可证发布。将其作为 gem 发布是个不错的选择,下面是具体步骤。
2.1 包布局
创建 gem 的首要任务是将代码组织成合理的目录结构,遵循以下通用约定:
- 将所有 Ruby 源文件放在 lib/
子目录下,后续会介绍如何确保用户加载该 gem 时,此目录会被添加到 Ruby 的 $LOAD_PATH
中。
- 若项目合适,在 lib/yourproject.rb
中包含必要的 require
命令,以加载项目的主要功能。这为他人使用库提供了便利。
- 始终包含一个 README </