Using 'include' but not poluting my namespace

I noticed that if you 'include' a module within a method, it will polute the namesapce that defines that method. I found a simple solution is to declare a throw-away class, and execute my code in that. Is there a more better way to achieve this?

# Pollutes current namespace
def init()
   include Inertia

   do_stuff_with_inertia()
end

# Doesn't polute namespace, but ugly
class DontPolute
   include Inertia

   do_stuff_with_inertia()
end

Mike

both pollute your namespace equally. the first pollutes class Object, the
second class DontPolute. remember that you're code in ruby, if not inside a
class, is inside the Object class. this allows you to pretend your coding
something like perl. i always write main programs like so

   class Main
     ...
   end

   Main::new if $0 == __FILE__

to avoid any such issues.

if you are looking for a workaround you can also use

   Module::new{ include Inertia ... }

regards.

-a

···

On Sat, 11 Mar 2006, Mike Austin wrote:

I noticed that if you 'include' a module within a method, it will polute the namesapce that defines that method. I found a simple solution is to declare a throw-away class, and execute my code in that. Is there a more better way to achieve this?

# Pollutes current namespace
def init()
include Inertia

do_stuff_with_inertia()
end

# Doesn't polute namespace, but ugly
class DontPolute
include Inertia

do_stuff_with_inertia()
end

Mike

--
knowledge is important, but the much more important is the use toward which it
is put. this depends on the heart and mind of the one who uses it.
- h.h. the 14th dali lama

Instead of include, you may want:
require 'intertia'

This will load up inertia.rb, which i'm assuming contains either a class or a
module name Intertia. Then you can use it via Interia.new() or
Intertia::do_stuff_with_intertia().

Correct me if I'm misunderstanding what you're trying to do here.

···

On Friday 10 March 2006 13:53, Mike Austin wrote:

I noticed that if you 'include' a module within a method, it will polute
the namesapce that defines that method. I found a simple solution is to
declare a throw-away class, and execute my code in that. Is there a more
better way to achieve this?

# Pollutes current namespace
def init()
   include Inertia

   do_stuff_with_inertia()
end

# Doesn't polute namespace, but ugly
class DontPolute
   include Inertia

   do_stuff_with_inertia()
end

Mike

--
Brian Mattern