IronRuby on Rubyforge!
I'm happy to announce that we're live on Rubyforge today!
It's been nearly 6 weeks since our initial source code release at OSCON. So what's changed?
- Exception handling
- Parallel assignment
- Instance variables
Added some more library support:
- Comparable
- Enumerable
- Array
- Hash
- String (not quite complete yet)
- Dir
Go get the sources and have a happy hacking weekend!
Update: John Messerly has just checked in an updated Rakefile that fixes some of the problems that folks have had with doing builds externally.

This is fantastic right before a long weekend. Thanks a ton and congrats on the release! Can't wait to dive in!
Posted by: Aaron Junod | August 31, 2007 at 09:09 PM
Fantastic news. Congrats on meeting your deadline of end of August.
Posted by: Josh Nursing | August 31, 2007 at 09:17 PM
Thanks! As a test, I filed the first bug :)
http://rubyforge.org/tracker/index.php?func=detail&aid=13565&group_id=4359&atid=16798
Posted by: Seo Sanghyeon | August 31, 2007 at 09:43 PM
haha!, Love the comment, Seo.
Posted by: Josh Nursing | August 31, 2007 at 11:02 PM
Hi,
Where is the exact link to download the codes. I already registered on RubyForge, but i could not find anything to download.
I have spent enough time hunting for the codes. Can any one provide the exact link to download the codes.
Thanks
SoftMind
Posted by: SoftMind | August 31, 2007 at 11:20 PM
@SoftMind,
It's under the SCM tab,
http://rubyforge.org/scm/?group_id=4359
Yeah, I know, SCM doesn't exactly bring about a sense of "Oh, this is where I would click to access the code." I would think just "Code" would do the trick, but apparently others feel differently.
Posted by: M. David Peterson | September 01, 2007 at 12:44 AM
FYI... via http://www.oreillynet.com/windows/blog/2007/09/ironruby_and_rubynet_labor_day.html
IronRuby and Ruby.NET Labor Day Weekend *HACKFEST* Extravaganza
So with the release of IronRuby to RubyForge and opening things up for community contribution (you will need to sign a contributors agreement before they will be able to accept your contributions, but that’s completely normal and an understood necessity by anyone who has contributed to a large open source project before) what better way to celebrate than by throwing a *HACKFEST* Extravaganza?
Of course, while we’re at it, why not spend some time helping out with the *other* .NET Ruby runtime and compiler project, Ruby.NET?
So without further adieu,
This Saturday… day, day < Sunday... day, day, and < Monday... day, day *ONLY*, the IronRuby and Ruby.NET Labor Day Weekend *HACKFEST* Extravaganza is coming to an IRC channel near you,
irc://irc.freenode.net/#ironruby
- and -
irc://irc.freenode.net/#ruby.net
[Said in the deepest, most stern Monster Truck Weekend announcer voice I can conjure up] BE THEEEERRE…
Posted by: M. David Peterson | September 01, 2007 at 12:46 AM
Thanks for the post! Now I know how I can fill my "empty time" during the weekend. ;-)
Posted by: Javier Lozano | September 01, 2007 at 09:36 AM
Hey Jon
Just wanted to give you the experience of a dev who's never worked with Ruby before, but wanted to play with it:
Installed Tortoise SVN, checked out the source. All went fine.
Opened Ruby.csproj in VS8. Building resulted in many compiler errors...I see there are missing references.
I searched for .csproj files in the trunk folder, and see several, so I add those to the solution.
Building still results in some errors. A root cause appears to be a missing mssharedlib.snk or similarly named key signing file.
I did a search for this file and don't see it. So I look for an alternate SNK.
I find debugKey.snk in the Microsoft.Scripting folder added set that as the sign key file in the Scripting project. Build results in the same error; looking for the missing mssharedlib.snk even though that's removed from the settings.
I'm thinking the project's new SNK just isn't sticking for some reason, so I save the project, unload it from VS, then reload. Same error.
I'm thinking the problem may be a bug in VS that doesn't save the new SNK. So I fire up VS9 and try it. Same error.
I take matters into my own hands and open the Scripting.csproj in a text editor and replace all references to mssharedlib.snk with debugkey.snk.
I fire it up again in VS9 and now it works, I can compile all the .csproj files in a single solution. Cool!
Anyways, just wanted to share my experience. I don't work on open source projects typically so a lot of this is new to me. Thought you might like to hear the experience of a Ruby and open source newb.
Now, where to go from here? :-) That is the question...
Posted by: Judah | September 01, 2007 at 01:42 PM
John,
Are you guys working on a proper build script for us to build this? The RakeFile is not of much value to us.
-Rob
Posted by: Rob Bazinet | September 01, 2007 at 08:39 PM
@Rob: What's wrong with the Rakefile? If you type rake compile it should create a release mode build for you.
@Judah: Thanks for sharing the pain. I need to spin up a VM that lets me live the life as an external contributor, and without all of our internal environment stuff. Does the Rakefile work for you?
Posted by: John Lam | September 01, 2007 at 09:07 PM
Rakefile did not work for me. Here is the output.
C:\projects\IronRuby>rake compile
(in C:/projects/IronRuby)
rake aborted!
undefined method `+' for nil:NilClass
C:/projects/IronRuby/rakefile:5
(See full trace by running task with --trace)
C:\projects\IronRuby>rake compile --trace
(in C:/projects/IronRuby)
rake aborted!
undefined method `+' for nil:NilClass
C:/projects/IronRuby/rakefile:5
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:1855:in `load'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:1855:in `load_rakefile'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:1929:in `run'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/bin/rake:7
c:/ruby/bin/rake.bat:20:in `load'
c:/ruby/bin/rake.bat:20
Posted by: Aaron Junod | September 02, 2007 at 06:22 AM
@Aaron: This looks like a case where csc.exe isn't on your path? Can you add csc.exe to your path and retry?
Thanks!
Posted by: John Lam | September 02, 2007 at 07:29 AM
Tried here with rake, same result with Aaron. I have double verified and csc.exe is on path- I am using VS command console.
And whats the environment prerequisite to build IronRuby? I only have .net 2.0 installed, so I don't think its enough.
Posted by: goodwill | September 02, 2007 at 09:32 AM
John,
I get the same thing everyone else does. CSC.EXE is in my path but the errors reported by Aaron are the ones I get.
So...what is wrong with the RakeFile?
-Rob
Posted by: Rob Bazinet | September 02, 2007 at 09:35 AM
csc.exe is in the path in my instance as well.
Knowing it should work though, I'll see if I can't find more info tonight after daddy duty.
Posted by: Aaron Junod | September 02, 2007 at 12:53 PM
Same problem here, csc is in my path.
Posted by: krishna | September 02, 2007 at 01:23 PM
running:
rake compile MERLIN_ROOT=c:\path\to\ironruby\trunk
fixed it. make sure you give the right path.
Posted by: krishna | September 02, 2007 at 02:39 PM
That worked perfectly. Thanks a ton krishna!
Posted by: Aaron Junod | September 02, 2007 at 05:20 PM
I just checked in a fix for the rakefile. It doesn't require MERLIN_ROOT environment variable to be set anymore. Instead it gets the path of the rakefile itself, and uses that.
You still need to have FrameworkDir and FrameworkVersion set so it can find CSC. This is set automatically in a Visual Studio 2005 command prompt, but you can also set it manually via something like:
set FrameworkDir=C:\Windows\Microsoft.NET\Framework
set FrameworkVersion=v2.0.50727
Posted by: John B. Messerly | September 02, 2007 at 08:13 PM
The update worked great on my machine from the 2k5 command prompt. Thanks!
Posted by: Aaron Junod | September 03, 2007 at 04:44 AM
Thanks John. This worked perfectly for me too.
Posted by: Rob Bazinet | September 03, 2007 at 09:18 AM
Hey John
You asked if I tried the Rakefile. To be honest, I've never heard of a rakefile before -- as I mentioned, I'm a newbie when it comes to open source projects.
I just looked it up and see it is similar to ant or make, but with functionality allowing one to "shell out to Ruby", I assume that means use Ruby from within the build script.
However, I'm not sure if I need to learn Rakefile now that I've gotten it building by tweaking the .csproj files.
Posted by: Judah | September 03, 2007 at 12:04 PM
@Judah:
Rake is one of my favorite examples of an internal DSL. If you take a look at the Rakefile in the root directory, you'll see some simplistic examples of how this can help to make it easier to understand the structure of the build process for IronRuby.
However, you can definitely stick to just using VS and .csproj files to build. However, you might want to run 'rake test' to run the unit tests.
Posted by: John Lam | September 03, 2007 at 08:24 PM
I tried it with rake but failed with the following error trace
C:\ironruby\trunk>rake compile --trace
(in C:/ironruby/trunk)
** Invoke compile (first_time)
** Invoke clean_build (first_time)
** Execute clean_build
** Invoke compile_dlr (first_time)
** Execute compile_dlr
resgen C:\ironruby\trunk\src\microsoft.scripting\Math\MathResources.resx C:\ironruby\trunk\release\Microsoft.S
cripting.Math.MathResources.resources
rake aborted!
undefined method `exitstatus' for nil:NilClass
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:719:in `sh'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:726:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:726:in `sh'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:805:in `sh'
C:/ironruby/trunk/rakefile:152:in `resgen'
C:/ironruby/trunk/rakefile:152:in `each_pair'
C:/ironruby/trunk/rakefile:152:in `resgen'
C:/ironruby/trunk/rakefile:164:in `compile'
C:/ironruby/trunk/rakefile:172:in `compile_all'
C:/ironruby/trunk/rakefile:227
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `call'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `each'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:392:in `execute'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:362:in `invoke'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `synchronize'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `invoke'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:369:in `invoke_prerequisites'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1003:in `each'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1003:in `send'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1003:in `each'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:368:in `invoke_prerequisites'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:361:in `invoke'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `synchronize'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:355:in `invoke'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `top_level'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `each'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1739:in `top_level'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in `standard_exception_handling'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1733:in `top_level'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1711:in `run'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1761:in `standard_exception_handling'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/lib/rake.rb:1708:in `run'
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.3/bin/rake:7
c:/ruby/bin/rake.bat:20:in `load'
c:/ruby/bin/rake.bat:20
Do you have any ideas on what might be wrong?
Appreciate your help very much
regards
Stefan
Posted by: Stefan | September 04, 2007 at 01:29 AM
@John,
>> Thanks for sharing the pain. I need to spin up a VM that lets me live the life as an external contributor, and without all of our internal environment stuff. ", create a password for that account with "passwd ", change the root passwd via "passwd", add your newly created user to the sudoers file via "visudo" (find the line that starts with "root" and copy it verbatim, changing the username appropriately), logout and then log back in with your newly created user account, prefacing system commands with sudo and using your account password when prompted.
If anyone else has interest there are Virtual Server and QEMU versions of this same build available @ http://www.rpath.org/rbuilder/project/nuxleus/releases
You'll have full access to the latest Mono bits including all of the compilers (including Moonlight) as well as the Mono debugger.
Support lists can be found @ http://www.rpath.org/rbuilder/project/nuxleus/mailingLists
Happy Hacking!
Posted by: M. David Peterson | September 04, 2007 at 01:56 AM
@John,
Forgot that I can't use at the end of a line on the comment system. Here's the post again, this time in a format that will make better sense. ;-)
"Thanks for sharing the pain. I need to spin up a VM that lets me live the life as an external contributor, and without all of our internal environment stuff."
I've added rake to the default set of tools available in nuXleus (which is a Linux-based Mono-centric virtual appliance geared to web applications and XML messaging.) You can get the VMware version I just created @ http://www.rpath.org/rbuilder/project/nuxleus/release?id=5789
Default login is "root" with no password.
IronRuby is pre-installed as well. Simply type rbx at the command prompt.
Also, you'll want to create a user account with "useradd -m ", create a password for that account with "passwd ", change the root passwd via "passwd", add your newly created user to the sudoers file via "visudo" (find the line that starts with "root" and copy it verbatim, changing the username appropriately), logout and then log back in with your newly created user account, prefacing system commands with sudo and using your account password when prompted.
If anyone else has interest there are Virtual Server and QEMU versions of this same build available @ http://www.rpath.org/rbuilder/project/nuxleus/releases
You'll have full access to the latest Mono bits including all of the compilers (including Moonlight) as well as the Mono debugger.
Support lists can be found @ http://www.rpath.org/rbuilder/project/nuxleus/mailingLists
Happy Hacking!
Posted by: M. David Peterson | September 04, 2007 at 02:00 AM
Hi folks,
I found my error. o/c you should have 'resgen' in your path ;-)
What if some test cases give back bad results? For me the following are failing when executing the compiled IronRubyTestHost.exe:
- Scenario_RubyMath1 (Ruby.Builtins.Errno+DomainError: Domain error - Domain error - acos)
- Scenario_RubyNumericLiterals1 (Unexpected output: First difference (8): actual = '1' expected = '.')
- Scenario_RubyBoolExpressions4 (Unexpected output: First difference (5): actual = '0' expected = '.')
Was the compile process successful or is it something with other dependent components on my machine?
Thanks for your answers.
Regards
stefan
Posted by: Stefan | September 04, 2007 at 05:31 AM
@Stefan:
I think it's your localization settings. I'm assuming that you're not using US English settings? If so, do you mind filing a bug for this? Thanks!
Posted by: John Lam | September 04, 2007 at 08:40 AM
@David:
Thanks for spinning up these VMs! I'm spending the morning setting up some VMs here for myself.
Posted by: John Lam | September 04, 2007 at 08:48 AM
@John
Just to let you know, changing the language settings did the trick for the errors I mentioned above. Now I have just one testcase failing:
Scenario_RubyScopeParsing
(16707566:0): FatalError: RB-1: syntax error, unexpected tLSHFT
Thanks for you help
-- Stefan
Posted by: Stefan | September 05, 2007 at 04:49 AM
Just want to make you aware of this thread:
http://rubyforge.org/forum/forum.php?thread_id=17319&forum_id=17159
-- Stefan
Posted by: Stefan | September 05, 2007 at 05:33 AM
@ IronRuby Community
Hi,
Just Posting a link of a nice blog on IronRuby.
http://ironruby.blogspot.com/2007/09/many-reasons-to-fall-in-love-with.html
The Author with the help of another Ruby blog covers 10 Ruby + 10 IronRuby advantages and makes it 100 advantages.
An Informative blog on IronRuby advantages that gives you an immediate thought of learning Ruby from IronRuby point of View.
He Clearly explains that 10 + 10 = 100 tomorrow, rather than 20 today. I welcome such types of blogs.
Cheers
Posted by: SoftMind | September 08, 2007 at 01:07 AM
rake compile fails with an error message: Could not find RubyGem pathname2 (>= 0.0.0)
Posted by: adia | March 13, 2008 at 04:32 AM
@adia: You need to do "gem install pathname2" first.
Posted by: John Lam | March 13, 2008 at 06:19 AM