クラスメソッドを private 化する場合は特異クラスをオープンする class X # クラスメソッドを定義する def self.hoge = "hoge" # これはインスタンスメソッドを private 化するのでエラーになる private :hoge # 特異クラスをオープンしてその中で private 化する class <<self # ここは X クラスの特異クラスのスコープになるので # X クラスの特異クラスのメソッドがプライベート化される private :hoge end end # error: private method `hoge' called for X:Class (NoMethodError) X.hoge