[Ironruby-core] How to implement a C# interface from Ruby ?

Tomas Matousek Tomas.Matousek at microsoft.com
Mon Feb 9 20:45:38 EST 2009


You need to call the method from C# to check whether it is actually bound to the CLR interface implementation. The method will always be callable from Ruby.

Tomas

From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Jimmy Schementi
Sent: Monday, February 09, 2009 5:43 PM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] How to implement a C# interface from Ruby ?

How does it fail? Nothing fails for me, but how are you trying to use this Ruby class?

(test.cs has your c# code in it):

C:\dev>csc.exe /t:library test.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.715
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

C:\dev>ir
IronRuby 1.0.0.0 on .NET 2.0.50727.3521
Copyright (c) Microsoft Corporation. All rights reserved.

>>> require 'test.dll'
=> true
>>> class Doer
...   include IDoSomething
...   def hello_world
...     puts "hello"
...   end
... end
=> nil
>>> Doer
=> Doer
>>> Doer.new
=> #<Doer:0x000005c>
>>> Doer.new.hello_world
hello
=> nil

~js

From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Thibaut Barrère
Sent: Monday, February 09, 2009 5:23 PM
To: ironruby-core
Subject: [Ironruby-core] How to implement a C# interface from Ruby ?

Hello again,

I'm playing around with the idea of using IronRuby to implement plugins for a C#-based system (namely, CruiseControl.Net).

I'm having some difficulties trying to figure out what the correct syntax for that would be. I'm currently using this to bootstrap the engine:

                                  var reader = new StreamReader("plugin.rb");
                                  var code = reader.ReadToEnd();
                                  reader.Close();

                                  var engine = IronRuby.Ruby.CreateEngine();
                                  engine.Execute(code);

The code inside plugin.rb is trying to implement an existing C# interface:

          public interface IDoSomething {
                      void HelloWorld();
          }

I tried:

class Doer
  include IDoSomething

  def hello_world
    puts "hello"
  end
end

but it fails. What would be the correct syntax for a Ruby class to implement this ?

thanks!

-- Thibaut
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090209/9c6b4f85/attachment-0001.html>


More information about the Ironruby-core mailing list