【Ruby】privateメソッドはModule#instance_methodsでの検索対象外
privateメソッドは、Module#instance_methodsの検索対象外。
Hoge.instance_methods(false).include?(:public_method) #=> インスタンスメソッドの名前が配列で返却される。
検証
- Articleモデルに、publicメソッドとprivateメソッドを定義。
class Article def test_public_method puts "publicメソッドです" end private def test_private_method puts "privateメソッドです" end end
- Railsコンソールで確認。
[12] pry(main)> Article.new.test_public_method publicメソッドです => nil [13] pry(main)> Article.new.test_private_method NoMethodError: private method `test_private_method' called for #<Article:0x00007fcae0e6ae30> Did you mean? test_public_method from /Users/takeyoshimasaru/.anyenv/envs/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/activemodel-6.0.2.1/lib/active_model/attribute_methods.rb:428:in `method_missing' # publicメソッドが見つかる [15] pry(main)> Article.instance_methods(false).grep(/test_public_method/) => [:test_public_method] # privateメソッドは見つからない [16] pry(main)> Article.instance_methods(false).grep(/test_private_method/) => []
RailsやRubyを学びたい人へ
RailsやRubyを学びたい人は、
RailsHack(レイルズハック)という、
最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、
Udemy で下記のコースを受講すると良いです★
✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。
✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
また、
Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、
「30日間なら返金できる」ので、
満足できなかった時でも安心です。