Some posts that I have found useful:
- http://chneukirchen.github.com/rps/
- http://tomayko.com/writings/require-rubygems-antipattern
- http://yehudakatz.com/2009/07/24/rubygems-good-practice/
- http://weblog.rubyonrails.org/2009/9/1/gem-packaging-best-practices
Edit (2012-01-10): An excellent all-around guide to gem best practices is RubyGems Guides. I would highly recommend starting here now.
To summarize the key points:
- Use the basic
lib/gem.rbandlib/gem/structure for code. - Put any executables in
bin, any data files indataand tests intestorspec. - Don’t
requireor depend upon files outside of the load path. (VERSIONfiles often seem to live in odd places in gems.) - Do not
require 'rubygems'. - Do not tamper with the
$LOAD_PATH. - If you find yourself writing
require File.join(__FILE__, 'foo', 'bar'), you’re doing it wrong.