先日、privateなクラスメソッドを定義しようとして、つまづきました。 なので、僕が実装に失敗したパターンと正しい実装方法を記載したいと思います。 失敗パターン まず、僕が実装に失敗したパターンです。何事もなく呼び出せてしまっています。 class C private def self.def1 p 'def1' end end C.def1 # "def1" 正しい実装方法 Module#private_class_methodを使う場合 次に、正しく実装した場合です。想定通りdef1がprivateメソッドになっているので、呼び出すことが出来ませんでした。 class C def self.def1 p 'def1' end private_class_method :def1 end C.def1 # a.rb:9:in `<main>': private method `def1