Looking for Examples

I’m wondering if anyone can point me to some good example projects
using IronRuby. Specifically I’m looking for libraries and projects
using some of the things we take for granted with regular ruby
development - rake, gems, rspec, etc. I’m starting a project of my
own and since there isn’t a lot of documentation out there yet I
figure looking at other projects is the best way to see how it’s done.

I’m not looking for projects that just use small pieces of IronRuby -
I really want to see how someone would build a library or end-to-end
solution leveraging gems, rake tasks, and unit testing in IronRuby.


Glen Cooper
(425) 802-6627

As far as I know you can’t use gems yet in IronRuby and that’s also why
there is no example with unit tests etc. It can’t be done atm.
IronRuby has a minispec framework built in but that isn’t as fully
as rspec for example.
Basically building stuff with IronRuby is the same as with Ruby only now
can use everything from .NET too.

» ir -D
IronRuby on .NET 2.0.50727.3053
Copyright (c) Microsoft Corporation. All rights reserved.

Note that local variables do not work today in the console.
As a workaround, use globals instead (eg $x = 42 instead of x = 42).

require ‘rubygems’
=> true
require ‘pathname2’
require': no such file oad -- pathname2 (LoadError) from c:\tools\IronRuby\src\microsoft.scripting.core\actions\matchcaller.generated.cs:35:in Call3’
UpdateAndExecute' from c:\tools\IronRuby\src\microsoft.scripting.core\actions\updatedelegates.generated.cs:45:in Update3’
from :0
Call3' from c:\tools\IronRuby\src\microsoft.scripting.core\actions\callsite.cs:275:in UpdateAndExecute’
from :0

If you’re looking for the “Ruby way” of doing things then there are
of libraries and ruby projects that you can study, for me personally
is not much difference between programming against either. If you
know .NET it’s just a matter of getting the hang of Ruby like where and
to use metaprogramming, embracing hashes etc. For example:

class Member

attr_accessor :name, :age, :marital_status, :children

def initialize(options)
options.each do |key, value|
instance_variable_set “@#{key}”, value


member = Member.new :name => “Joe Schmoe”, :age => 27, :marital_status
:married, :children => 2.1
puts member.name

Or you can take existing .NET classes and extend them

module StringExtensions

 def to_uri
     System::Uri.new self


require ‘mscorlib’

class System::String
include StringExtensions


System::String.include StringExtensions

Check out ironruby-contrib on github that should hold at least 2
that go further than ‘hello world’.


The thing with gems is that it’s going to be quite tricky… some of the
useful ones (hpricot for example) depend on C-extensions and then they
to be ported first to .NET.

At this moment i would try to include them in a lib folder or something
then require them when I load my script. (read what merb does ;))
manually installing doesn’t work yet either at least not when I tried
this morning. At this moment i wouldn’t use IronRuby for anything that
to go into production, that being said there most of the time there are
alternatives in the .NET world and you can just leverage those.

Out of curiosity which libraries did you want to use?


Thanks for the response. So let me ask you this. If you were to
start building a project and wanted to leverage existing libraries out
there, would you manually install them to your iron ruby install
directory? Or just add them into a gems folder in your project - like
what merb does with frozen gems?

Glen Cooper
(425) 802-6627

Normally if you use gems you can wrap the requires in a begin…rescue
and catch the LoadError. At least that’s how I figured I would do it.

I should actually remove those lines now because the libraries are now
included in the ironruby distribution.

I use a vendor dir where I’ll later first check for any existing folders
they don’t I’ll try to do the requires of the necessary gems. For
plugins a
similar idea is used. I’m looking in the subfolders of vendor or plugins
a file called init.rb and require those.

What is also done is putting the list of required gems in a readme

The IronRuby team uses a rake task called happy to see if your
is setup properly for the build, I imagine you can do the same.

Certain gems include their dependencies but I personally don’t really
that approach because often I’ll have the gems already installed
although it
makes your gem portable without problems for dependencies.

Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
GSM: +32.486.787.582
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim

Well rspec for one - but I understand it isn’t quite ready for IR yet

  • or vice versa. One of the main reason I’m asking is that I’m
    starting a project which will be a library, not a stand-alone
    application. So I’m wondering about things like dependencies and how
    someone would actually use the library. In other words, if my library
    depends on another, how does the user using my library actually get
    all the dependencies.

I know we’re on the bleeding edge here and there a lot of things that
either don’t work yet or aren’t as elegant as they will be in the
future. I am just trying to avoid going down one path if there is a
better way I’m not aware of.

Thanks for the help!

Glen Cooper
(425) 802-6627

In that case I would be very interested to know how to use rspec or any
the other gems. I tried copying them to the gems folder in the IronRuby
install folder but that wasn’t it :slight_smile:

I suppose you just took the library and then required the spec file in
lib folder.

How are you guys doing on rails support because I think I dragged this
chapter out long enough and it’s time to start a new one soon. I was
thinking rails because I could do my samples for the time being with MRI
choose some rubygems to showcase.

And my publisher asked me if the date for januari is still good as a
date :slight_smile:

I have more date questions, do you have an ETA for asp.net & asp.net mvc
support so I can do some planning around it?
I realise I could hack something together myself but if that won’t look
the way you are doing it I would have to rewrite too much in my samples
probably and it also feels like a waste of time from my part then. I
that is not something that can be contributed through the community but
to come from MS.


Glen Cooper:

Well rspec for one - but I understand it isn’t quite ready for IR yet

  • or vice versa.

I’ve actually gotten rspec to run on IronRuby. But today, our startup
time issues (which are being fixed right now) make it a whole less
useful than the mspec framework that we’re currently using for testing