![](/img/trans.png)
[英]What's the simplest way to run a cron job on a standalone Ruby gem?
[英]What is the modern way to structure a ruby gem?
隨着Bundler的發布,變化有多大? 是否有可用作基礎的模板? 什么是最佳做法?
我覺得有些帖子很有用:
編輯 (2012-01-10):寶石最佳實踐的優秀全能指南是RubyGems指南 。 我強烈建議從現在開始。
總結關鍵點:
lib/gem.rb
和lib/gem/
structure代碼。 bin
,在任何數據文件data
和測試在test
或spec
。 require
或依賴於加載路徑之外的文件。 ( VERSION
文件似乎經常出現在寶石中的奇怪位置。) require 'rubygems'
。 $LOAD_PATH
。 require File.join(__FILE__, 'foo', 'bar')
,那你做錯了。 在編寫胖(二元)寶石時,結構通常如下:
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.