rails開発3週間で学んだことなど

rails開発を始めて早いものでもう3週間も経った。 最初の開発も一段落しつつあるので何かメモを残しておこうかなと。 rails以外でも学んだことは多いのでそれも含めてのメモ。

コードリーディング編

使っているライブラリやモジュールを全てgrepで調べることはできない

  • 例えばgolangでは
    • 使うモジュールやライブラリは最初に宣言するので、そこを見ると外部パッケージを使っているのかそれとも内部に実装されているものを使っているのかが分かる
import "github.com/gin-gonic/gin" // 外部パッケージ
import "nekootoko3/app/server/meshi" // 内部実装
  • railsではスクリプト内で明示的に使うパッケージが明示されていないことが多い
    • 親クラスでの実装、あるいはincludeしていればすぐに辿ることができる。
    • しかしgemとしてinstallしているパッケージに関しては突然何の前触れもなく現れてこいつはだれだ!?となる

rails console の登場

  • rails開発はデバッグも含め、このコンソール抜きでは進めることができないと言っても過言ではない
  • pryが入っていて色々めちゃめちゃ便利にできるようになっている。
    • dotenvなどを使って環境変数から変数の中身を取り込むようになっている変数の表示ができる
    • (コンソール上で) >> $ 突然出てきたモジュール名
      • 実装元のファイルとその実装内容を表示してくれる!
    • 実際にモデルやメソッドを動かして何がアウトプットされるのか確認できる
    • (コンソール上で) >> cd オブジェクト
      • オブジェクトに入ることができる!
      • 下記のlsを行うと使える
    • (コンソール上で) >> ls (突然出てきたモジュール名、何も指定しなくてもよい)
>> Delayed::Worker::VARIABLE
=> 3
>> $ Delayed::Worker::VARIABLE
いろいろ出てくる
  • rails のコードリーディングはこれを活用しよう

デバッグ

  • railsではメタプログラミングなるものがフル活用されており、動的にロジックが生成されるのでタイポがあっても普通にサーバーが立ち上がる(静的解析がされていない?)
  • なので、rails consoleでコンソールを立ち上げて、該当のパスへのリクエスト、メソッドの実行などを行って確かめる。

コーディングのTIPS

多値の受け取り

- 関数からメソッドが2つ以上返ってくる時、受け取る変数が1つの場合、暗黙的に配列として受け取る。スカラー値として受け取りたい、ただし、2つ目の値はいらないという場合は下記のように `_` を使い、いらないけどとりあえず受け取っとくみたいなことをやるとよい。
a = return_two_values_method # a = [var1, var2]
a, _ = return_two_values_method # a = var1, var2

返り値にハッシュではなく構造体を返す

  • ハッシュだと a["key"]みたいになって若干書きにくい
  • チェインメソッドを使えるよう構造体を使うとよい(rubyに構造体あるって知らなかった)
  • この記事を見るとよいかも。

return nil 明示的に書かなくてもよい

  • ruby は最後に評価された値が返される
  • 評価される値が何もない場合には、nilが返されるので return だけでも nil が返される。

参考

  • この記事も参考になりそう
    • 会社のrubyにはこの記事に入っているpryが入っている気がする