On Friday 04 July 2008, Deepak Gole wrote:
> Hello,
>
> I didn't understand the following concept.
>
> *class Universe
>
>  private
>   def self.private_method
>     p "=========Hello world======="
>   end
>
> end
>
> Universe.**private_method**  => "=========Hello world======="
> *
>
> How come I get the o/p ( *"=========Hello world=======" * ) as I have
> declared that method as private.
>
> Thanks in advance
> Deepak Gole (DG)

The private method only makes instance methods private, not class methods. 
This means the reason you can call Universe.private_method is that, despite 
its name, the method is still public. To make a class method private, you can 
use the Module#private_class_method method:

class Universe

  def self.private_method
    p "Hello world"
  end

  private_class_method :private_method

end

Universe.private_method

=> private method `private_method' called for Universe:Class (NoMethodError)

I hope this helps

Stefano