Philippe Monnet
2008-Jun-12 12:36 UTC
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
Sanghyeon Seo
2008-Jun-12 13:02 UTC
[Ironruby-core] Having difficulties using custom C# dlls with namespaces within IronRuby code
2008/6/12 Philippe Monnet <ironruby at monnet-usa.com>:> - the require "mywebsvcproxy" returns true > - if I evaluate mywebsvcproxyns I get undefinedThis 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 ... -- Seo Sanghyeon
Ivan Porto Carrero
2008-Jun-12 13:04 UTC
[Ironruby-core] Having difficulties using custom C# dlls with namespaces within IronRuby code
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 Monnet <ironruby at monnet-usa.com> wrote:> 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 > > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20080613/893e030e/attachment-0001.html>
Sanghyeon Seo
2008-Jun-12 13:04 UTC
[Ironruby-core] Having difficulties using custom C# dlls with namespaces within IronRuby code
Oops, I misinterpreted. Disregard my mail. -- Seo Sanghyeon
Tomas Matousek
2008-Jun-12 16:31 UTC
[Ironruby-core] Having difficulties using custom C# dlls with namespaces within IronRuby code
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: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20080612/38d6773a/attachment.html>
John Lam (IRONRUBY)
2008-Jun-12 16:34 UTC
[Ironruby-core] Having difficulties using custom C# dlls with namespaces within IronRuby code
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> -----Original Message----- > From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core- > bounces at rubyforge.org] On Behalf Of Tomas Matousek > Sent: Thursday, June 12, 2008 9:32 AM > To: ironruby-core at rubyforge.org > Subject: Re: [Ironruby-core] Having difficulties using custom C# dlls > with namespaces within IronRuby code > > 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: ironruby-core-bounces at rubyforge.org > [mailto:ironruby-core-bounces at rubyforge.org] 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
Philippe Monnet
2008-Jun-12 18:55 UTC
Re: Having difficulties using custom C# dlls with namespaces within IronRuby code
Interesting finding! What''s funny is my C# projects and assemblies are usually Camel cased with prefixes and all that, with a few exceptions like some asp.net projects bearing the domain name of the site. This is what lead me to this example! I just changed my C# service proxy assembly, updated my Silverlight project "et voilà"!!! Thanks for your help. :-) I have to say that keeping the Silverlight front-end in Ruby with Ruby web services leads to a nice consistent developer experience. If only I could get rid of the C# proxy ...! I know that you have said that the lack of attribute support is what would prevent that. Is there any option to "invent a syntax" that could be mapped to .Net attributes? Philippe John Lam (IRONRUBY) wrote: 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 -----Original Message----- From: ironruby-core-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org [mailto:ironruby-core- bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org] On Behalf Of Tomas Matousek Sent: Thursday, June 12, 2008 9:32 AM To: ironruby-core-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org Subject: Re: [Ironruby-core] Having difficulties using custom C# dlls with namespaces within IronRuby code 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: ironruby-core-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org [mailto:ironruby-core-bounces-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org] 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 _______________________________________________ Ironruby-core mailing list Ironruby-core-GrnCvJ7WPxnNLxjTenLetw@public.gmane.org http://rubyforge.org/mailman/listinfo/ironruby-core