Forum: Ruby Namespacing my classes

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
998dcd37297540b08b20a6558c40ec64?d=identicon&s=25 Zouplaz (Guest)
on 2008-10-13 16:02
(Received via mailing list)
Hello, as I want to avoid name clashes I tried to organise them like
this (just a fake example, reflecting reality)

lib/mylib.rb contains
module Mylib

   module TestDatas
     FOO = "Ho yeah"
   end

   require 'somelib/tools'
   require 'somelib/motor'
end

somelib/tools.rb contains
class Mylib::Tools
end

somelib/motor.rb contains
class Mylib::Motor

   def something()
  Mylib::TestDatas.FOO
   end

end



Well, I did this by try/error until I had no more execution errors and
having them behaving as expected but is there any caveat ?

I'm just suprised by the location of the requires statements

Thanks
9e2504e0b74e5384af09ce8a660afac4?d=identicon&s=25 Pascal J. Bourguignon (Guest)
on 2008-10-13 16:15
(Received via mailing list)
Zouplaz <user@domain.invalid> writes:

>   require 'somelib/tools'
>   def something()
> I'm just suprised by the location of the requires statements
You don't need to put these requires inside the module blocks.

Instead, you could write:

(module MyLib
  (module TestData
    (FOO = "abc")
  end)
end)

(module MyLib
  (class Tool
  end)
end)

(module MyLib
  (class Motor
    (def something
      (TestData::FOO)
    end)
  end)
end)

That is,  if you  avoid the (class  Abc::Def::Ghi ... end)  form, then
modules namespaces will be created automatically when needed.

Then, how you spread the forms over files and execute require is up to
you and doesn't matter much.
B1b1d33e0655e841d4fd8467359c58d0?d=identicon&s=25 Yossef Mendelssohn (Guest)
on 2008-10-13 18:53
(Received via mailing list)
On Oct 13, 9:12 am, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
>
> (module MyLib
>   (class Motor
>     (def something
>       (TestData::FOO)
>     end)
>   end)
> end)

What are all those parentheses about?
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2008-10-13 19:46
(Received via mailing list)
On 13.10.2008 18:49, Yossef Mendelssohn wrote:
>>   end)
> What are all those parentheses about?
Probably a Lisp fan. :-)

$ ruby -cw <<XXX
 > (module MyLib
 >   (module TestData
 >     (FOO = "abc")
 >   end)
 > end)
 > XXX
Syntax OK


To OP, usually this is structured a bit differently:

lib/mylib.rb contains

module MyLib

   module TestData
     FOO = "Ho yeah"
   end

end

require 'mylib/tools'
require 'mylib/motor'


mylib/tools.rb contains

module MyLib
   class Tools
   end
end

mylib/motor.rb contains

module MyLib

   class Motor
     def something()
       TestData::FOO
     end
   end

end


Btw, there is no plural of "data" in English AFAIK.

Kind regards

  robert
998dcd37297540b08b20a6558c40ec64?d=identicon&s=25 Zouplaz (Guest)
on 2008-10-13 21:15
(Received via mailing list)
le 13/10/2008 19:44, Robert Klemme nous a dit:

> end
>
> end
>
>
> Btw, there is no plural of "data" in English AFAIK.
>

Ho, fine ! I didn't know I could reuse Module MyLib in several place to
enclose the classes...

About 'data', I trust you ;-) I wish I could find a webchat with people
willing to speak French with me, while speaking English with them - I
could learn a alot, but for the moment, I just found men masturbating in
the dark :-))
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2008-10-13 21:30
(Received via mailing list)
On 13.10.2008 21:12, Zouplaz wrote:
>>   class Tools
>>     end
>>   end
>>
>> end
>>
>>
>> Btw, there is no plural of "data" in English AFAIK.
>>
>
> Ho, fine ! I didn't know I could reuse Module MyLib in several place to
> enclose the classes...

Note also that you do not need the full namespace path when referencing
the const (see above).

> About 'data', I trust you ;-) I wish I could find a webchat with people
> willing to speak French with me, while speaking English with them - I
> could learn a alot, but for the moment, I just found men masturbating in
> the dark :-))

Well, you never know what it is good for. :-)

There is an IRB chat on freenode - albeit in English.

Cheers

  robert
Beb77c4602c3cac7a12149431366ed11?d=identicon&s=25 The Higgs bozo (higgsbozo)
on 2008-10-13 22:46
Robert Klemme wrote:
>
> There is an IRB chat on freenode - albeit in English.
>

IRB chat!  Now that's an awesome typo.  Or maybe a Freudian slip?  You
know you're a programmer when the distinction between IRB and IRC is
blurred.
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2008-10-14 08:31
(Received via mailing list)
On 13.10.2008 22:43, The Higgs bozo wrote:
> Robert Klemme wrote:
>> There is an IRB chat on freenode - albeit in English.
>
> IRB chat!  Now that's an awesome typo.  Or maybe a Freudian slip?  You
> know you're a programmer when the distinction between IRB and IRC is
> blurred.

LOL!  It was definitively unconscious.  I was probably distracted.  I
leave the interpretation to you. :-)

Cheers

  robert


PS: Are you the unknown particle that they now cannot find because the
collider at Cern is broken?
This topic is locked and can not be replied to.