スリ飯屋MaLankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Ruby】privateメソッドはModule#instance_methodsでの検索対象外

【Ruby】privateメソッドはModule#instance_methodsでの検索対象外




privateメソッドは、Module#instance_methodsの検索対象外。

Hoge.instance_methods(false).include?(:public_method)
#=> インスタンスメソッドの名前が配列で返却される。

検証

  1. Articleモデルに、publicメソッドとprivateメソッドを定義。
class Article
  def test_public_method
    puts "publicメソッドです"
  end

  private

  def test_private_method
    puts "privateメソッドです"
  end
end
  1. 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日間なら返金できる」ので、

満足できなかった時でも安心です。


f:id:mah666hhh:20201129193352p:plain


【公式】RailsHack(レイルズハック)

【公式】Udemyで学んでみる