Makes ruby extension libraries pluggable (thus not forcing such a library on the users of your library - like BigBand - but still giving you some fancy features).
TODO: Describe what it actually does. Feel free to have a look at the specs/code, should be pretty easy to understand.
Version number will soon be synchronized with BigBand.
Those libraries are supported as backends out of the box:
ActiveSupport (tested with 2.3.2 to 3.0.beta)
Backports (tested with 1.11.1 to 1.15.0, >= 1.13.1 required for Rubinius)
Extlib (tested with 0.9.13 and 0.9.14)
Facets (tested with 2.8.0 to 2.8.2)
MonkeyLib has been tested and is known to work with the following Ruby implementations:
Ruby (MRI) 1.8.6, 1.8.7, 1.9.1, 1.9.2-preview1, also tested with trunk on regular basis
Ruby Enterprise Edition 2009.10, 2010.01
Rubinius 1.0.0-rc2 to 1.0.0-rc4, also tested with master branch on regular basis
JRuby 1.3.1, 1.4.0
MagLev 22780 to 23191 (Backports backend recommended, but all expectations pass on all backends)
IronRuby 0.9.3, 1.0-rc2 (only Extlib and Backports)
Currently it does not run on MacRuby, but I'm working on it.
Running the specs
Run specs with all backends:
Run specs with active_support:
Run specs with backports and using mspec instead of rspec (so it might work on incomplete ruby implementations):
SPEC_RUNNER=mspec rake spec:backports
Sometimes there are issues with running rake from the ruby implementation (maybe rake is not fully supported, or the backend detection messes with your ruby). You can use one ruby implementation to run the specs on another one. For instance, I use rvm to manage my rubies:
rvm install macruby-0.5 rvm use macruby-0.5 gem install mspec backports rvm use default RUBY=$rvm_path/rubies/macruby-0.5/bin/ruby SPEC_RUNNER=mspec rake spec:backports