Lower case namespace

Hy all,

I’m trying to use a 3rd party library into my app via IronRuby
Unfortunately the root namespace of this library is lower case and I
believe
this cause some problem
This is the sample code I wish to run

require “devDept.EyeshotUltimate”
include devDept::Geometry
o = Point3D.Origin
puts o.x
puts o.y
puts o.z

but the second line throws the exception
undefined method `devDept’ for main:Object (NoMethodError)

I think I know why this append
(http://ironruby.net/Documentation/.NET/Names
)
“CLR namespaces and interfaces must be capitalized as they are mapped
onto
Ruby modules”

Since I can’t modify the 3rd party library is there a way to avoid this
error ?
Many thanks
claudio

you could try with:

Geometry = Object.const_get(“devDept::Geometry”)
include Geometry

I haven’t tried if this actually works though


Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Web: http://whiterabbitconsulting.eu - http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Microsoft IronRuby/C# MVP

On Thu, May 6, 2010 at 8:38 AM, Claudio M.

I can think of a workaround (never checked it though) - create a C#
assembly
that adds a name alias to the assembly:

using DevDept = devDept;

and then require this assembly.

Shay.

Shay F. | Microsoft Visual C#/IronRuby MVP | Author of IronRuby
Unleashed
Blog: http://IronShay.com | Twitter: http://twitter.com/ironshay

Hi Ivan,

thank you for you prompt reply
Now my code is

require “devDept.EyeshotUltimate”
Geometry = Object.const_get(“devDept::Geometry”)
include Geometry
o = Point3D.Origin
puts o.x
puts o.y
puts o.z

When I run it I get this error:

C:\Users\cmaccari\Desktop\ironruby-1.0\bin>ir devDept.rb
devDept.rb:2:in const_get':devDept::Geometry’ is not allowed as a
constant name (NameError)
from devDept.rb:2

Any ideas

But this assembly has no types inside right ?

Right, no types, only an alias for the problematic namespace.I haven’t
checked that though.

Let us know if you find a solution.

Shay.

Shay F. | Microsoft Visual C#/IronRuby MVP | Author of IronRuby
Unleashed
Blog: http://IronShay.com | Twitter: http://twitter.com/ironshay

On Thu, May 6, 2010 at 10:36 AM, Claudio M.

you can use .NET reflection still
the assembly is loaded but you can also interrogate it and get the types
you
need out and instantiate them that way.
Not ideal but still worth a shot.

The aliasing won’t work I guess because that works at an assembly level,
but
if it does it’s good to know :slight_smile:

IronRuby doesn’t know extern alias which is what you’d need to use.

Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Web: http://whiterabbitconsulting.eu - http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Microsoft IronRuby/C# MVP

On Thu, May 6, 2010 at 9:21 AM, Claudio M.

The aliasing doesn’t work or I missed something :frowning:

Does anyone know if IronPython use the same convention?
Will I have the same issue if I convert my ruby code to python ?

Thks
makka

On Thu, May 6, 2010 at 5:46 PM, Claudio M.

This is almost right. You just need to split the constant lookup into 2
parts and you should be good:

require “devDept.EyeshotUltimate”
Geometry = Object.const_get(“devDept”)::Geometry
include Geometry
o = Point3D.Origin
puts o.x
puts o.y
puts o.z

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Claudio
Maccari
Sent: Thursday, May 06, 2010 12:22 AM
To: [email protected]
Subject: Re: [Ironruby-core] Lower case namespace

Hi Ivan,

thank you for you prompt reply
Now my code is

require “devDept.EyeshotUltimate”
Geometry = Object.const_get(“devDept::Geometry”)
include Geometry
o = Point3D.Origin
puts o.x
puts o.y
puts o.z

When I run it I get this error:

C:\Users\cmaccari\Desktop\ironruby-1.0\bin>ir devDept.rb
devDept.rb:2:in const_get': devDept::Geometry’ is not allowed as a
constant name (NameError)
from devDept.rb:2

Any ideas

On Thu, May 6, 2010 at 8:48 AM, Ivan Porto C.
<[email protected]mailto:[email protected]> wrote:
you could try with:

Geometry = Object.const_get(“devDept::Geometry”)
include Geometry

I haven’t tried if this actually works though


Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Web: http://whiterabbitconsulting.eu - http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Microsoft IronRuby/C# MVP

On Thu, May 6, 2010 at 8:38 AM, Claudio M.
<[email protected]mailto:[email protected]> wrote:
Hy all,

I’m trying to use a 3rd party library into my app via IronRuby
Unfortunately the root namespace of this library is lower case and I
believe this cause some problem
This is the sample code I wish to run

require “devDept.EyeshotUltimate”
include devDept::Geometry
o = Point3D.Origin
puts o.x
puts o.y
puts o.z

but the second line throws the exception
undefined method `devDept’ for main:Object (NoMethodError)

I think I know why this append
(http://ironruby.net/Documentation/.NET/Names)
“CLR namespaces and interfaces must be capitalized as they are mapped
onto Ruby modules”

Since I can’t modify the 3rd party library is there a way to avoid this
error ?
Many thanks
claudio


Claudio M.

http://twitter.com/scott4dev


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Claudio M.

This won’t work since C# aliases are available only at compile time.
They are not persisted in the resulting assembly.

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Claudio
Maccari
Sent: Thursday, May 06, 2010 12:36 AM
To: [email protected]
Subject: Re: [Ironruby-core] Lower case namespace

But this assembly has no types inside right ?
On Thu, May 6, 2010 at 8:55 AM, Shay F.
<[email protected]mailto:[email protected]> wrote:
I can think of a workaround (never checked it though) - create a C#
assembly that adds a name alias to the assembly:

using DevDept = devDept;

and then require this assembly.

Shay.

Shay F. | Microsoft Visual C#/IronRuby MVP | Author of IronRuby
Unleashed
Blog: http://IronShay.com | Twitter: http://twitter.com/ironshay

On Thu, May 6, 2010 at 9:48 AM, Ivan Porto C.
<[email protected]mailto:[email protected]> wrote:
you could try with:

Geometry = Object.const_get(“devDept::Geometry”)
include Geometry

I haven’t tried if this actually works though


Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Web: http://whiterabbitconsulting.eu - http://flanders.co.nz
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Microsoft IronRuby/C# MVP

On Thu, May 6, 2010 at 8:38 AM, Claudio M.
<[email protected]mailto:[email protected]> wrote:
Hy all,

I’m trying to use a 3rd party library into my app via IronRuby
Unfortunately the root namespace of this library is lower case and I
believe this cause some problem
This is the sample code I wish to run

require “devDept.EyeshotUltimate”
include devDept::Geometry
o = Point3D.Origin
puts o.x
puts o.y
puts o.z

but the second line throws the exception
undefined method `devDept’ for main:Object (NoMethodError)

I think I know why this append
(http://ironruby.net/Documentation/.NET/Names)
“CLR namespaces and interfaces must be capitalized as they are mapped
onto Ruby modules”

Since I can’t modify the 3rd party library is there a way to avoid this
error ?
Many thanks
claudio


Claudio M.

http://twitter.com/scott4dev


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Claudio M.

Amazing, now it works! :slight_smile:
Thank you very much Tomas!!!

Bye
Claudio

On Thu, May 6, 2010 at 6:31 PM, Tomas M.
<[email protected]