Requiring .NET assemblies


I ran into a pretty weird issue, I tried to use some of the .NET ORM’s
I haven’t investigated with the debugger turned on yet but here’s what I

I tried this with ActiveRecord from Castle, SubSonic and LightSpeed.
Linq2Sql doesn’t have a problem.

What the first 3 ORM’s have in common is that I can use the types in the
actual ORM library. All of those ORM’s require you to have a generic
If I include other types in the assembly (non generic base classes) then
can just use those classes.
When I create a type with a generic base class that is defined in the
assembly I can use that class in IronRuby

For SubSonic a Customer class could look like:

public class Customer : ActiveRecord{
// model code here

The output from the console session that shows the behavior. I tried a
of different approaches but it always boils down to the same error.

*IronRuby 0.1 on .NET 2.0.50727.1434
Copyright © 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 ‘mscorlib’
=> true

require Dir.getwd + ‘/SubSonic.dll’
=> true

require Dir.getwd + ‘/DataAccess.SubSonic.dll’
=> true

include DataAccess::SubSonic
=> Object
IronRuby.Libraries:0:in ConstantMissing': uninitialized constant Object::Customer (NameError) from :0:inmain’
from :0:in `##16


Is this a bug or is it a case of me missing something?


So, the Customer class was generated by SubSonic and is contained in
DataAccess.Subsonic.dll? Do you get the same results by leaving out the
include and saying



I got basically the same result when trying to use a SubSonic-generated
from IronPython. The Assembly.GetTypes function wasn’t able to resolve
generated classes because “Could not load file or assembly ‘SubSonic,
Version=, Culture=neutral, PublicKeyToken=eadb47849839a332’ or
one of
its dependencies”
The problem went away when I copied the SubSonic DLLs into the same
directory as the executable.

You also have to create an rbx.config file otherwise it doesn’t know how
find the config file.

ah k I’ll try that thanks

Where is the assembly that contains Customer? Is that "

BTW: ActiveRecord (from Castle) does not require you to inherit
ActiveRecordBase. You can just mark up your classes with attributes and
ActiveRecordMediator for all the CRUD.


Yep the same thing happens, and i can elaborate on that
If it’s an assembly which only contains ie. ActiveRecord types then i
even execute include DataAccess::SubSonic

I tried many variations on the theme. Tried with signed assemblies vs
unsigned ones, tried different syntax structures, tried it in the
and in a file.

Thanks a lot that works :slight_smile: