Prepping your Gemfile for Rubinius

Rubinius 2.0 is on it’s way and it’s shaping up to be a serious contender. Adding support for Rubinius to your gem should be pretty painless.

Here at [i] it’s common for us to depend on support utilities like ruby-debug or perftools. Fortunately Rubinius comes with a very solid debugger and profiler. The best solution I’ve found is to use Bundler’s :platform rules to limit those libraries to Matz’s ruby.

In your Gemfile:

gem 'ruby-debug',   :platform => :mri_18
gem 'ruby-debug19', :platform => :mri_19, :require => 'ruby-debug'
gem 'perftools.rb', :platform => :mri,    :require => 'perftools'

And then inside your spec helper or test helper use bundler to only require the dependencies you need for that platform:

require 'bundler/setup'
Bundler.require(:default, :development)

And that’s it.

Photo of Chris Gaffney

Chris is a Michigan native with a love of high-performance networking and server infrastructure. He brings a plethora of experience in event-driven programming and hardware integration systems.

He got his start in Ruby on Rails very early on (version 0.13) while on an internship from Grand Valley State University. He comes to Collective Idea from local startup where he spent three years working writing Ruby and Java.


Post a Comment

(optional — will be included as a link.)
  1. If you’re using Bundler’s ‘gemspec’ method, this won’t work. You will need to use something like this directly in your .gemspec file:
    if !defined?(RUBY_ENGINE) || RUBY_ENGINE != ‘rbx’    s.add_development_dependency ‘rcov’, ‘~> 0.9’     s.add_development_dependency ‘metric_fu’, ‘~> 2.1’  end

    June 23, 2011 at 20:08 PM
  2. Ah the wicked webs we weave. See using gemspec, not a great idea really. And using environment conditions, even worse. Essentially you’ve tied your gem build to your environment, so the .gem file will com out different depending on your current rvm selection. Remember the gemspec if not copied to .gem it is processed and saved a static YAML.

    June 25, 2011 at 15:06 PM
  3. trans: it is development and test dependencies that we really use this for. We let the gemspec define the gem’s requirements, and the Gemfile can handle dev & test.

    June 25, 2011 at 15:13 PM
  4. Hi everyone, I am sure you will be enjoying here by watching these kinds of comic movies.

    March 17, 2013 at 17:44 PM