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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for morihirok morihirok
August 01, 2024

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

Avatar for morihirok

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 におけるリソースについて意識を向けられ、よりよい設計を促す きっかけになる