🛤️
今から Rails 6.x アプリケーションをつくるなら入れておきたい Gem やテクニック | 2020年10月版
2022/1/31 追記
いまだにこの記事のPVがあるので Rails アプリケーション作るときに参考になりそうなリンクを追記しておきます。
- 【Rails】もっと早く知りたかったデバッグ用gem 'better_errors','binding_of_caller' | Qiita
- 【Rails】better_errorsとbinding_of_callerで自分でエラーを解決できるようになろう【初心者向け】 | Qiita
- https://qiita.com/ryokky59/items/284892be879996e4f77c - Railsにおけるドメイン駆動設計の実践 | linyclar
- https://linyclar.github.io/software_development/ddd/rails/ - Railsメモ | linyclar
- Ruby on Railsをかんたんスピードアップ | Techブログ | MNTSQ, Ltd.
- railsのdefaultでは用意されていない考え方や設計、リファクタリングについてのリンク集 | Qiita
- お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考える | Qiita
完全に偏った方針ですが、あくまで主観的な話で一般論ではないと言い訳した上で……
@ハックは使わない
Controller で @hoge
に値を保持させておいて View で参照するのが rails way.
しかしこれが View で参照している物の把握を困難にする。
Controller の public method でやってしまうのはどうかという提案が以下。
Controller で render json..
とするだけのAPIなら不要。
- 参考
- Removing the @ Hack in Rails Controllers - Medium
- Rails: 提案「コントローラから
@
ハックを消し去ろう」(上記翻訳) - TechRacho
gem sorbet-rails で静的型チェックを導入
Ruby の動的型付けは便利だがエンジニアの途中参入時に混乱を生みやすい。
Ruby3 でも静的型チェックが導入されるが、当面 rails は ruby2.x なので
Sorbet を導入することで実現できる
- 参考
- chanzuckerberg / sorbet-rails
- Sorbetで「型のあるRuby」の開発体験を試そう
リクエストパラメータのバリデーションは入れておく
- 参考
-
Rails でリクエストパラメータのバリデーション -
progrhyme's Tech Wiki- Parameter クラスを作るなら
- Railsにparameter層を導入する - Qiita
- バリデーションを助けてくれるgemを併用するのもいいかも(やりすぎぐらいがちょうどいい気がする)
- Parameter クラスを作るなら
- 後述する
gem committee
を使うのもいい
手段はなんでもいいので swaggerUI を導入しておく
APIドキュメントがない状態で開発を続けるのは辛い。
今からRailsアプリケーションを始めるなら以下記事などを参考にスキーマ駆動開発で進めるのがいいだろう
gem committee を使ったRequest validation も視野に入ってくるので上記リクエストのバリデーション対応も不要になってくる。
OpenAPI generator でAPI定義を自動生成するような準備までやっておければ
開発効率にも貢献しやすい
- Rails + RSpec + OpenAPI3 + Committeeでスキーマ駆動開発を運用するTips
- ぼくのかんがえたさいきょうのAPIドキュメント運用
- RailsのAPI開発にスキーマ駆動開発を導入して、品質と開発スピードを高める
- APIがカオスってたプロダクトでOpenAPI対応やってみた
とはいえ私個人はrswagで生成して SwaggerUI で確認するって方式も好きなので紹介まで
- とにかくRails6でrswagを動かす - Qiita
- Adding Swagger Docs to a Rails 6 API Using Rswag
そのほかGem
- 認証認可は device で安定
- ransack はやはり便利
- WebAPI を作るならResponseの作成に jbuilder
- N+1 問題の検知には bullet
- 静的コード解析に rubocop
- rubocop-hq / rubocop-rails
- 【Rails】RuboCop 導入編(2020年10月版) - Qiita
- rubocopとは? - Qiita
- RuboCop is 何? - Qiita
- binding.pry が使えないとデバッグが辛すぎるので pry-rails
- pry-debugger もいる
- これから Rails プロジェクトつくるなら pry-byebug かも
- スタックとレースも見たいなら pry-stack_explorer もいる
-
show-stack
でスタックトレースみれるようになる
-
- pry-debugger もいる
- ユニットテストは rspec-rails
- https://github.com/rspec/rspec-rails
- RailsアプリへのRspecとFactory_botの導入手順 - Qiita
- Request Spec 書くなら rspec-request_describer も
- めんどくさいメールアドレスなどのダミーデータ生成には faker
- rspec での json のマッチングがダルいので rspec-json_matcher
- テストごとにDBをきれいにしたいので DatabaseRewinder
- Modelの自動コメント記述に Annotate
- ログ関連
Discussion