次のソースコードでは、Foo#foo()はprivateなクラスメソッドにはなりません。
class Foo
private
def self.foo
return 'foo'
end
end
Foo.foo #=> 'foo'
そこで、Rubyでクラスメソッドをprivateにする方法です。
1.private_class_methodを使う方法
private_class_methodはその名の通り、指定したメソッドをprivateなクラスメソッドにします。
class Foo
def self.foo
return 'foo'
end
def self.bar
return 'bar'
end
private_class_method :foo
end
Foo.bar #=> 'bar'
Foo.foo #=> エラー
2.特異クラスでprivateを使う方法
複数のクラスメソッドをまとめて登録するときは、特異クラスで登録することが多いと思います。
特異クラスでprivateを使うと、privateなクラスメソッドになります。
class Foo
class << self
def bar
return 'bar'
end
private
def foo
return 'foo'
end
end
end
Foo.bar #=> 'bar'
Foo.foo #=> エラー