A recent JavaPosse podcast compared RubyGems to CPAN, which aroused my interest.
Gems are units of packaging and deployment for Ruby code with a reasonable versioning scheme. Dependencies can be specified only at the level of whole gems, e.g.:
require_gem 'activesupport', '<= 1.3.1'which is analogous to OSGi's require-bundle or JSR 277's import.
Dependency versions may be hard-coded, i.e. included in the using code, or can be separated out into a YAML config file which is presumably analogous to OSGi's bundle manifest.
There were some hints in the documentation that multiple versions of a gem could be used "side by side", but I'd like to understand how types are dereferenced in Ruby and whether a gem provides a proper name space of types.