今回、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ページで中身の値を確認し、デバッグすることが出来ます。
- !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でチェックします。
このように確認することが出来ます。
デバッグ用のgemファイル
railsには便利なデバッグ用のgemファイルが用意されています。
better_errors
byebug
pry-byebug
まとめ
デバッグの手法として分割統治法があります。
大きなプログラム上の問題やバグが発生したとしても小さな問題に分割し、個別に小さな問題を解決していくことで、大きな問題も解決しやすくなります。
そのため、プログラミングでバグやエラーが発生した場合は、焦らず丁寧にオブジェクトに入っている値や配列を確認しながらデバッグしていくことが大事です。
デバッグをこまめに実施し、バグの原因を見つけた時は嬉しいものです。
プログラミング初学者の方は、特にデバッグすることを意識してプログラムを書いていくと挫折しにくいかも知れませんね。
参考サイト
[初心者向け] Ruby on Rails デバッグ方法まとめ – Qiita