10
9

超基本のエラー対処法

Posted at

はじめに

「うまく動かない」時、僕が普段意識しているであろうことを書き連ねていきます。

Railsを中心に説明(雑)をしていきます。よろしくお願いします。

とにかくログに出す!

Railsだとpあるいはputsメソッドを使い、変数やリクエストやらをログに出力します。

pputsの違いは基本気にしなくていいです。うまくいかないときはもう片方を使ってください。そのうち慣れます。

puts "---------------"
puts arg # 変数
puts "---------------"

こんな感じで書くと見やすいです。

とにかくログを読む!

どこを見るの?

ログは、例えばdocker compose upしたところに流れます。
docker compose up -d と、-dオプションをつけるとログが見づらくなります(たぶん。使ったことない)。

何を見るの?

特にRailsの場合は、

  • 「どのHTTPリクエストがきているか」
    GET / POST など・・・それは意図しているもの?
  • 「どのコントローラーの、どのアクションが呼び出されているか」
    それは意図しているもの?
  • 「長いログ」の見方
    大体はおしりの方ではなく、最初の方に「何が問題か」が書かれています。
    もしくは、単に無駄の多い処理であることもあります。その場合は、マストではないですが改善するのが良きです。なんだってシンプルな方が良いものです。

ページに表示されてるエラーを見る

当然ですが、念の為。
こちらも、頭の方に表示されているのがだいたい問題の核心です。
後ろの方は読まなくていいことが多いです。

問題点を分離する

どこが問題かを特定するのは大事なことです。
ここでもpが役立ちます。

def action
  # 処理1...
  puts "---------------"
  puts "1 ok"
  puts "---------------"
  # 処理2...
  puts "---------------"
  puts "2 ok"
  puts "---------------"
  # 処理3...
  if hoge
    puts "---------------"
    puts "if hoge"
    puts "---------------"
  else
    puts "---------------"
    puts "else"
    puts "---------------"
  end
end

こんな感じで書くと、どの処理が実行されているかがわかります。
どこかが実行されないはずです。

逆に、どれも正常に表示されるなら、以下のように考えます。

  • 別のファイルに問題がある
  • そもそもの設計や認識が間違っている(プログラミング自体は正常に動いている)
  • どこかの変数の中身が間違っている(とにかくログに出す!を試す)

おわりに

n番煎じのネタな上、超基本的なことばかりでしたが、大体はこれの応用だと思います。

これらで解決できないときは、個人的には地力が足りてないのかなと思います。

地力が足りない・・・

  • これからやろうとしていることがよくわかってない
  • メソッドの挙動を勘違いしてる(特にRailsは裏側で動くことが多いので)

このような状態ですね。

Q. 地力が足りないときは?
A. 経験あるのみです。
メソッドの挙動なんて間違いながら覚えるもんだし、
やろうとしてることがわからないのは当たり前だと思ってます。
とにかくやってみて、「これでよかったのか」「これじゃだめだったのか」と知る。

振り返りがうまい人はより深く考えられるのでしょうし、そうなりたいと思いますが、
今のところは答え見てでもなにか進めて、経験として残っていることを願うのみです。
まあ、全部覚えるなんて無理なので、どんどん進んでます。

良い振り返り方、「やろうとしてることがわからない」時のタスク分解方法を知っている方がいれば教えて下さい🙇‍♂️

思いもよらず偉そうなことを書いてしまいました。
自分自身の迷いにも効くな・・・

お読みいただきありがとうございました。

次は何を書こうかしら・・・

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9