Railsのソースコード読んでみる | ActiveSupport present?編

f:id:sktktk1230:20180726124729p:plain

普段仕事で使っているRuby on Railsですが、ソースコードを読む機会もなかなかないので、試しにやってみることにしました

読めるようにするまで

以前書いた記事に読めるようにするまでの設定を画像キャプチャ付きで解説しましたので、よろしければこちらをご参照下さい
shitake4.hatenablog.com

読んだ箇所

Rails書いているとよく使う present? を今日は読んでみようと思います

どんな使い方だっけ?

読んでみる前にまずは使い方を調べてみます
Railsの日本語ドキュメントを見てみると

変数.present?
!blank? を実行するメソッド。if 変数.present?とunless 変数.blank?は同じ意味
nil, "", " "(半角スペースのみ), , {}(空のハッシュ) のときにfalseを返します。
Railsで拡張されたメソッドで、Rubyのみでは使えないのでご注意ください。
引用:Railsドキュメント:present

とのことです こちらも blank? 同様によく使うメソッドです

ソースコードを読んでみる

1. railsプロジェクトのactivesupportにある機能なので、activesupportディレクトリのlib配下で def present? を探してみます

f:id:sktktk1230:20171218105833p:plain

2. 該当箇所が1箇所なので、それをみてみます

activesupport > lib > active_support > core_ext > object > blank.rb
class Object
  中略
  # An object is present if it's not blank.
  #
  # @return [true, false]
  def present?
    !blank?
  end

blank?メソッドの返り値を否定演算子で評価しています
blank?の返り値は、truefalse なので、present?も必ずtruefalse となります

※ blank?メソッドのソースコードリーディングについてはこちら

shitake4.hatenablog.com

読んでみて

今回は実装箇所が一箇所のみだったのとすでに blank? を読んでいたので、すんなりと理解することができました
読み進めていくうちにそれぞれの実装が関連しあっていくとより楽しめそうです