# Modules as namespace

**URL:** <https://www.ruby-forum.com/t/modules-as-namespace/175089>\
**Category:** Ruby\
**Created:** [September 7, 2009, 7:06pm UTC](https://www.ruby-forum.com/t/modules-as-namespace/175089 "2009-09-07T19:06:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ac91a4/32.png) [@jim](https://www.ruby-forum.com/u/jim)\
**Post date:** [September 7, 2009, 7:06pm UTC](https://www.ruby-forum.com/t/modules-as-namespace/175089/1 "2009-09-07T19:06:46Z")

</div>

i am writing plugins for sketchup and use a module to encapsulate and  
protect my variable and methods from name clashes.

Is there any difference between the following?

module A  
def A.say\_hi # or self.say  
puts “hi”  
end  
end

module B; end  
def B.say\_hi  
puts “hi”  
end

thanks.

---

<div class="post-metadata">

**Author:** ![jim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ac91a4/32.png) [@jim](https://www.ruby-forum.com/u/jim)\
**Post date:** [September 8, 2009, 8:25pm UTC](https://www.ruby-forum.com/t/modules-as-namespace/175089/2 "2009-09-08T20:25:41Z")

</div>

Thank you, David. I wasn’t even thinking about constants, but that’s  
good to know.

---

<div class="post-metadata">

**Author:** ![jim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ac91a4/32.png) [@jim](https://www.ruby-forum.com/u/jim)\
**Post date:** [September 7, 2009, 7:17pm UTC](https://www.ruby-forum.com/t/modules-as-namespace/175089/3 "2009-09-07T19:17:18Z")

</div>

Hi –

On Tue, 8 Sep 2009, Jim wrote:

> module B; end  
> def B.say\_hi  
> puts “hi”  
> end

The only difference I’m aware of has to do with constant resolution:

H = “Hi from top level”

module A  
H = “Hi from A”  
def A.say\_hi  
puts H  
end  
end

module B  
H = “Hi from B”  
end

def B.say\_hi  
puts H  
end

A.say\_hi # Hi from A  
B.say\_hi # Hi from top level

David

–  
David A. Black / Ruby Power and Light, LLC / [http://www.rubypal.com](http://www.rubypal.com)  
Ruby/Rails training, mentoring, consulting, code-review  
Latest book: The Well-Grounded Rubyist ([The Well-Grounded Rubyist](http://www.manning.com/black2))

September Ruby training in NJ has been POSTPONED. Details to follow.
