构建红宝石宝石的现代方法是什么?

时间:2010-07-22 08:56:16

标签: ruby rubygems

随着Bundler的发布,有多大变化?是否有可用作基础的模板?什么是最佳实践?

5 个答案:

答案 0 :(得分:37)

我觉得有些帖子很有用:

修改(2012-01-10):有关宝石最佳做法的优秀全能指南是RubyGems Guides。我强烈建议现在就从这里开始。

总结要点:

  • 使用基本lib/gem.rblib/gem/结构代码。
  • 将所有可执行文件放入bindata中的所有数据文件以及testspec中的测试。
  • 不要require或依赖于加载路径之外的文件。 (VERSION文件通常似乎生活在宝石中的奇怪位置。)
  • 请勿require 'rubygems'
  • 请勿篡改$LOAD_PATH
  • 如果你发现自己正在写require File.join(__FILE__, 'foo', 'bar'),那你就错了。

答案 1 :(得分:6)

使用 bundler

的最简单方法
bundle gem <gem_name>

您甚至可以在父目录的现有项目中使用它。

答案 2 :(得分:4)

当编写胖(二元)宝石时,结构通常是这样的:

lib/1.8/binary.so

lib/1.9/binary.so

lib/my_gem.rb(此文件只选择加载哪个binary.so,具体取决于ruby版本)

对于原生扩展:

lib/ext/my_gem/my_sources.*

lib/my_gem.rb

我通常也在这里放一个version.rb文件:

lib/my_gem/version.rb

它只包含以下内容:

module MyGem
    VERSION = "0.1.0"
end

此外,IMO,不要在lib/目录中放置任何.rb文件除了您希望人们用来加载gem的文件。而是将所有辅助文件放在lib/my_gem/

答案 3 :(得分:4)

Telemachus的建议很好。如果您遵循它,您的宝石将被设置为与捆绑器很好地协作。

您也可以尝试使用珠宝商。它是宝石,为宝石生成骷髅。它吐出的默认框架符合Telemachus提到的所有约定,它还会做一些很好的事情,比如添加你喜欢的测试框架或创建一个GitHub存储库。

答案 4 :(得分:3)

rubygems guide提供有关gem结构的信息,然后详细说明gemspec

中应包含的内容

您可能会发现使用bundler更容易为您创建gem的文件夹结构:

bundle gem <gem_name>

my_gem$ bundle gem my_gem create my_gem/Gemfile create my_gem/Rakefile create my_gem/LICENSE.txt create my_gem/README.md create my_gem/.gitignore create my_gem/my_gem.gemspec create my_gem/lib/my_gem.rb create my_gem/lib/my_gem/version.rb Initializing git repo in /Users/keith/projects/my_gem/my_gem