Upgrade to Pro — share decks privately, control downloads, hide ads and more …

継続的にRailsアプリを開発する上で早めにやっておきたいこと

morihirok
August 01, 2024

 継続的にRailsアプリを開発する上で早めにやっておきたいこと

morihirok

August 01, 2024
Tweet

More Decks by morihirok

Other Decks in Technology

Transcript

  1. ライブラリのアップデートは手間なので自動的に行いたい • 自動的かつ継続的にライブラリアップデートする仕組みは、早いうちに入れて おきたい ◦ Dependabot、Renovate など選択肢はいくつかある • STORES では自前で1日1回

    bundle update して Pull Request を投げ、レ ビューをランダムアサインする GitHub Actions を用意し使っている ◦ その昔 Dependabot にまとめて bundle update してくれる機能がなかったので自前で作った という背景 • この辺りはチームの規模感や文化、状況に合わせて最もワークする方法を模索 する
  2. .rubocop_todo.yml を減らすのは手間なので自動的に行いたい • 自動的かつ継続的に .rubocop_todo.yml を減らす仕組みは、早いうちに入れ ておきたい • 規模が大きいRailsリポジトリになると .rubocop_todo.yml

    を生成するにも時 間がかかる • rubocop-todo-corrector を使えば GitHub Action で手軽に .rubocop_todo.yml をメンテする仕組みを入れられる ◦ https://github.com/r7kamura/rubocop-todo-corrector
  3. seed を頑張ってメンテしよう • 初めの一歩はやるしかない、頑張って作り始める • CI で seed が壊れていないかテストしておくと便利 ◦

    https://product.st.inc/entry/2021/08/18/124533 # spec/etc/seed_spec.rb require 'rails_helper' describe 'development seed ' do it 'success' do expect { Dir.glob('db/seeds/development/*.rb ').sort.each { | file| load(file) } }.not_to raise_error end end
  4. コードカバレッジとは • ソースコードがどれくらいテストされているか理解するのに役立つ指標 • Ruby には Coverage というライブラリがあり、これによってテストを動かし たときにコード実行の有無を測定できる ◦

    テストによってコードが実行されていれば、それはテストによってカバーされていると考える • つまりカバレッジとはテストによってどれくらいのコードが実行されている か、その動作が担保されているか、というもの
  5. SimpleCov はとりあえず入れておいてよい • CI でテスト実行時に SimpleCov が回るようにしておく ◦ https://github.com/simplecov-ruby/simplecov •

    生成されたレポートをチームで閲覧できる状態にしておく • Codecov や Coveralls など、よりレポートを活用できるサービスもある
  6. DHH ルーティングとは • https://postd.cc/how-dhh-organizes-his-rails-controllers ◦ コントローラはデフォルトのCRUDアクション index 、 show 、

    new 、 edit 、 create 、 update 、 destroy のみを使う ◦ コントローラが元々持っているRESTアクションやデフォルトの5つの機能にはないメソッドを 付け加えたいと思ったら、いつだって新しいコントローラを作る ◦ 例えば InboxController#pendings を Inboxes::PendingsController#index にする
  7. DHH ルーティングに従うことのメリット • コントローラーを整理することができる ◦ Model が Fat になるのは一定仕方ない ◦

    Controller が Fat になるのは避けられる • REST API におけるリソースについて意識を向けられ、よりよい設計を促す きっかけになる