はじめに
「うまく動かない」時、僕が普段意識しているであろうことを書き連ねていきます。
Railsを中心に説明(雑)をしていきます。よろしくお願いします。
とにかくログに出す!
Railsだとp
あるいはputs
メソッドを使い、変数やリクエストやらをログに出力します。
p
とputs
の違いは基本気にしなくていいです。うまくいかないときはもう片方を使ってください。そのうち慣れます。
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. 経験あるのみです。
メソッドの挙動なんて間違いながら覚えるもんだし、
やろうとしてることがわからないのは当たり前だと思ってます。
とにかくやってみて、「これでよかったのか」「これじゃだめだったのか」と知る。
振り返りがうまい人はより深く考えられるのでしょうし、そうなりたいと思いますが、
今のところは答え見てでもなにか進めて、経験として残っていることを願うのみです。
まあ、全部覚えるなんて無理なので、どんどん進んでます。
良い振り返り方、「やろうとしてることがわからない」時のタスク分解方法を知っている方がいれば教えて下さい🙇♂️
思いもよらず偉そうなことを書いてしまいました。
自分自身の迷いにも効くな・・・
お読みいただきありがとうございました。
次は何を書こうかしら・・・