Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core
For me that just works with a namespace
what I do is I have my assemblies in a folder bin in my application but
that
could be what ever
I call require ‘bin/AssemblyName.dll’
In that assembly I have a namespace MyNamespace.Model
then I can do
include MyNamespace::Model
if that namespace contains a class called Message I can now use it as
message = Message.new
message.content = “The body of the test message”
puts message.content
I don’t know if you know about this but Rails 2.0 has a component
ActiveResource which should replace ActiveWebservice.
That component allows you to use the resources (if you’re using the
restful
routing that is) you’ve exposed for your rest application and on the
client
side you can use that same active resource stuff to create proxies and
do
queries against that rest service in a fairly nice way.
hope this helps
Ivan
On Fri, Jun 13, 2008 at 12:36 AM, Philippe M.
[email protected]
2008/6/12 Philippe M. [email protected]:
- the require “mywebsvcproxy” returns true
- if I evaluate mywebsvcproxyns I get undefined
This is the expected behavior. See:
irb> require ‘date’
=> true
irb> date
NameError: …
irb> Date
=> Date
As in the above Ruby session, require in Ruby does not create a local
variable with the filename in the namespace. It simply makes classes
defined in the file available. IronRuby follows this behavior when
requiring DLL, so,
require ‘mydllname’
MyDLLObject = MyDLLNamespace::MyDLLClass.new
…
Oops, I misinterpreted. Disregard my mail.
The casing is not right.
include mywebsvcproxyns
is the same as
include(mywebsvcproxyns())
I.e. mywebsvcproxyns is a method call.
You need to start namespaces with a capital letter. BTW, that’s also
.NET naming convention.
Tomas
From: [email protected]
[mailto:[email protected]] On Behalf Of Philippe
Monnet
Sent: Thursday, June 12, 2008 5:37 AM
To: IronRuby
Subject: [Ironruby-core] Having difficulties using custom C# dlls with
namespaces within IronRuby code
Now that the Beta 2 of Silverlight provides support for WSI web
services, I can now get an all-C# Silverlight app to call Rails (Action
Web Service) web services.
So I encapsulated my generated web service proxy in its own DLL so I can
use it from Ruby, like so:
…
require “System.ServiceModel”
require “mywebsvcproxy” #my DLL
…
include System::ServiceModel
include mywebsvcproxyns
…
svcproxy =
mywebsvcproxyns::MyRoRServiceReference::MyRorWsPortClient.new()
… etc …
However I keep getting an error as soon as I hit the include for my
assembly namespace.
I have tried to simplify the issue by creating a very tiny assembly with
a C# class with 2 properties and a constructor but I get the same issue.
I even tried that from IR with the same results:
- the require “mywebsvcproxy” returns true
- if I evaluate mywebsvcproxyns I get undefined
The DLL is in the same location as other .rb files in my Silverlight app
directory. I have even tried to provide an absolute path in the require
statement but that did not make any difference.
After putting this email on hold for another check, I found out that as
soon as I remove the namespace inside my custom assembly everything
works like a charm. I ended up also removing all namespace references in
the C# generated proxy and was able to get my IronRuby Silverlight app
to successfully invoke my Rails web service.
But coming back to the namespace issue, am I missing something basic in
how I should be integrating with custom assemblies?
Or is this a limitation for the time being?
Philippe
Yeah, but we’re also going to have to think about some way to workaround
this problem since we’re going to run into cases out there with folks
who have compiled assemblies that don’t follow the .NET naming
conventions (unbelievable but true! :))
Thanks,
-John