From: amit saxena Date: 2008-06-10T17:10:37+09:00 Subject: private class methods- functionality or shortcoming? "> The Module#private method only works for instance methods, > not for class > method." My question is, why is it so? What's the advantage in it? Amit --- On Mon, 6/9/08, Stefano Crocco wrote: > From: Stefano Crocco > Subject: Re: private class methods- functionality or shortcoming? > To: "ruby-talk ML" > Date: Monday, June 9, 2008, 7:39 PM > On Monday 09 June 2008, amit saxena wrote: > > I just switched to Ruby and came across it. > > If we have to make a class method private then we > should write it as: > > class Abc class< >But if we write as: class Abc private def self.fun p "hello" end end > > > > then the class method is not private but behaves as > public. > > > > So, is it a carefully designed functionality? If so, > then what is the > > thinking behind it? OR any other reasons behind it? > > Somebody told me that ruby encourages to define class > methods the first > > way. But I think that if you are giving more than one > methods to do a > > thing, then all should function the same way. > > > > Thanks and Regards, > > Amit > > The Module#private method only works for instance methods, > not for class > method. To make a class method private, you should use the > Module#private_class_method method. Note that, unlike > private, > private_class_method only accepts one argument, so that you > want to make more > than one method private, you should call it multiple times. > > So, the correct method to make the method private using the > second form is: > > class Abc > > def self.fun > p "hello" > end > private_class_method :fun > > end > > I hope this helps > > Stefano