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)

Ruby versions

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:

rake spec

Run specs with active_support:

rake spec: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