簡體   English   中英

構建紅寶石寶石的現代方法是什么?

[英]What is the modern way to structure a ruby gem?

隨着Bundler的發布,變化有多大? 是否有可用作基礎的模板? 什么是最佳做法?

我覺得有些帖子很有用:

編輯 (2012-01-10):寶石最佳實踐的優秀全能指南是RubyGems指南 我強烈建議從現在開始。

總結關鍵點:

  • 使用基本的lib/gem.rblib/gem/ structure代碼。
  • 把任何可執行文件在bin ,在任何數據文件data和測試在testspec
  • require或依賴於加載路徑之外的文件。 VERSION文件似乎經常出現在寶石中的奇怪位置。)
  • require 'rubygems'
  • 不要篡改$LOAD_PATH
  • 如果你發現你自己寫的require File.join(__FILE__, 'foo', 'bar') ,那你做錯了。

使用bundler的最簡單方法是:

bundle gem <gem_name>

您甚至可以在父目錄的現有項目中使用它。

在編寫胖(二元)寶石時,結構通常如下:

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/目錄中放置除了您希望人們用來加載gem的文件之外的任何.rb文件。 而是將所有輔助文件放在lib/my_gem/

Telemachus的建議很好。 如果您遵循它,您的寶石將被設置為與捆綁器很好地配合。

您也可以嘗試使用珠寶商。 它是寶石,為寶石生成骷髏。 它吐出的默認骨架符合Telemachus提到的所有約定,它還會做一些很好的事情,比如添加你喜歡的測試框架或創建一個GitHub存儲庫。

這個rubygems指南提供了有關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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM