文系エンジニア大学生の技術ブログ

社会が多様化していく中、大学生の学生生活も多様であるべきと考えています。主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。

【rails】controllerとviewページでデバッグする方法をまとめてみたよ

f:id:daikiyano:20190220171535p:plain

今回、railsのcontrollerとviewページでデバックする方法をまとめてみました。

そもそもデバッグとは

プログラミングをしている方なら、エラーが表示されたり、プログラムが思い通りに動かなことが多々あります。このようにプログラムに問題があったり、それが原因でエラーが表示されることをバグと言います。ゲームをしてたりするとバグというフレーズを聞くことがあるので、ご存知の方も多いと思います。当然ですが、バグがあればプログラムは正常に動作しないので、その原因を突き止めなければなりません。そのバグの原因を見つけ、修正する作業をデバッグと言います。私もプログラミング初心者の頃は日々エラーに悩まされてました。

意外と知らなかったrailsのデバッグ法

PHPの場合、デバッグの手法としてvar_dumpやprint_rなどのオブジェクトに入っている値や配列などを確認出来る便利な関数が用意されています。私のPHPで好きな関数はvar_dumpと言っていいほど、PHPでプログラミングを書く際は重宝します。 railsの場合のデバッグのやり方はControllerかViewによってデバッグの方法が異なります。

railsでデバッグする方法

今回、railsでデバッグする手法として以下の二つを紹介します。

  • <%= debug () %>・・・Viewページ用
  • logger.debug()・・・controller用

Viewページでデバックする方法

Viewページでデバッグする際は<%= debug () %>を使用します。 以下のように記載すればデバッグ出来ます。

/html.erb

<%= debug 中身を確認したい変数、値 %>

例えば、@userの値の中を確認したい場合は以下のように記述して

<%= debug @user %>

Viewページで中身の値を確認し、デバッグすることが出来ます。

concise_attributes:
  - !ruby/object:ActiveModel::Attribute::FromDatabase
    name: id
    value_before_type_cast: 1
  - !ruby/object:ActiveModel::Attribute::FromDatabase
    name: email
    value_before_type_cast: hello@gmail.com
  - !ruby/object:ActiveModel::Attribute::FromDatabase
    name: crypted_password
    value_before_type_cast: "$2a$10$YmSkade3RbHBguE.cM8kK./aIx5FEBVaj/ZXD.xvRT6sjJu"
  - !ruby/object:ActiveModel::Attribute::FromDatabase

このように記述した場合は、

<% @user.each do |user| %>
         <%= debug user.email %>
  <% end %>

Viewページにこのようにデバッグの結果が表示されます。

hello@gmail.com

Controllerでデバックする方法

続いてcontrollerでデバッグする際は logger.debug()を使います。

例えば、コントローラーで以下のように記載します。

@user = User.first
 logger.debug("コントローラーでデバッグだよ")
 logger.debug(@user.email)

デバッグの内容はブラウザでは確認出来ないのでlogでチェックします。

f:id:daikiyano:20190220165621p:plain

このように確認することが出来ます。

デバッグ用のgemファイル

railsには便利なデバッグ用のgemファイルが用意されています。

better_errors

github.com

byebug

github.com

pry-byebug

github.com

まとめ

デバッグの手法として分割統治法があります。 大きなプログラム上の問題やバグが発生したとしても小さな問題に分割し、個別に小さな問題を解決していくことで、大きな問題も解決しやすくなります。 そのため、プログラミングでバグやエラーが発生した場合は、焦らず丁寧にオブジェクトに入っている値や配列を確認しながらデバッグしていくことが大事です。 デバッグをこまめに実施し、バグの原因を見つけた時は嬉しいものです。 プログラミング初学者の方は、特にデバッグすることを意識してプログラムを書いていくと挫折しにくいかも知れませんね。

参考サイト

www.youtube.com

[初心者向け] Ruby on Rails デバッグ方法まとめ - Qiita

www.for-engineer.life

www.for-engineer.life

www.for-engineer.life