Railsメモ
Rails6で確認。
設定
開発ツール
- デフォルトで入っている:rack-mini-profiler
- 必須:RuboCop、RSpec、FactoryBot
- あった方が良い:Brakeman、Bullet、rack-dev-mark、bundler-audit
- テストカバレッジを気にする場合:SimpleCov
- ファイル変更時に自動チェックしたい場合:Guard
- 入れても良いかも:rails_best_practices、better_errorsとbinding_of_caller
- まずいコードになりがちな場合:Reek
- 大規模なリファクタリングを考えている場合:debride
- 入れなくて良い:Fasterer、MetricFu
Linter、静的コード解析ツール
- RBSとSteepメモ
- Ruby、Railsにおける型付け
- RuboCopメモ
- RubyのLinter
- Brakemanメモ
- Rails用の脆弱性チェックツール
- Reekメモ
- 設計的に問題がありそうなコードを指摘する静的コード解析ツール
- debrideメモ
- 呼ばれていないメソッドを探す静的コード解析ツール
- rails_best_practicesメモ
- Rails用の静的コード解析ツール。Rails Best Practicesの内容に基づくチェックを行う。
- ただし、サイトを見ればわかる通り、定義された時期が相当古く、完全に時代遅れとなっているものも存在する。
- Fastererメモ
- Fast Rubyの内容をチェックしてくれる静的コード解析ツール
rubocop-performance
gemでもFast Rubyの内容をチェックしているので、Fastererは使わなくても良いかも。
- MetricFuメモ
- rails_best_practices、roodi、flay、flog、Churn、reek、Caneをまとめて実行するツール
- 古くなっているツールも含まれるし、必要なものを個別で実行すればよいので個人的には使わなくていいと思う。
プロファイラ
- Bulletメモ
- N+1クエリが実行されているとき、不要なeager loadingが実行されているとき、カウンターキャッシュを利用すべきときに通知してくれるプロファイラ
- rack-mini-profilerメモ
- パフォーマンスのプロファイリングをするためのツール。ブラウザ経由で使う。
RSpec
- RSpecテクニック
- RSpecメモ
- RSpecコマンドメモ
- RSpecマッチャーメモ
- RSpecモックメモ
- RSpec Request Specメモ
- FactoryBotメモ
- Fixture
- SimpleCovメモ
- カバレッジレポートを出力するツール
- parallel_testsメモ
- testを並列実行できるようにするGem
その他の開発ツール
- Guardメモ
- ファイルの変更を検知してタスクを実行するツール
- bundler-auditメモ
- 依存gemのセキュリティ問題をチェックするツール
- Better Errorsとbinding_of_callerメモ
- エラー画面の表示をみやすくするgemとエラー画面でデバッグが行えるようにするツール
- rack-dev-markメモ
- 環境ごとにリボンをつける
機能追加Gem
- Kaminariメモ
- ページング機能
- Punditメモ
- ACL機能(いわゆる認可機能)
- Sorceryメモ
- 認証機能
- 認証機能のライブラリで自分で認証処理を組み立てるGem
- devise
- 認可機能
- 認証機能のパッケージですでに作られている認証処理をカスタマイズしていくGem
- 個人的には好かん
- CarrierWaveメモ WIP
- 画像アップロード機能
- dry-rb
ドキュメント
RSpec
どうも、Relishの問題で表示されなくなっているようである。生成元のGitHubのディクトリのリンクを付記しておく。
Rails
- Ruby on Rails API
- 古いバージョンを参照するときは「
https://api.rubyonrails.org/v5.2.4/
」のようにバージョン番号をつける
- 古いバージョンを参照するときは「
- APIdock
- 追加されたメソッドや廃止されたメソッドがどのバージョンで使えるのか調べたいときに使う
- たまに代替コードがコメントで記載されている
- 検索の使い勝手は悪いので、「apidock activerecord all」といった感じにググった方が早い。
スタイルガイドやコードサンプルなど
- Better Specs
- RSpecのベストプラクティス集
- Better SpecsのGitHubリポジトリ
- Best-Ruby
- Rubyにおける小技集
- Best-RubyのGitHubリポジトリ
- Fundamental Ruby
- 落とし穴やメタプログラミングなどのサンプル
- Ruby style guide
- Rubyにおけるベストプラクティスとスタイル規約集
- RuboCopはこのスタイルガイドを元に作られている
- Ruby style guide 和訳 古いかも
- Ruby style guideのGitHubリポジトリ
- Rails style guide
- Railsにおけるベストプラクティスとスタイル規約集
- RuboCop Railsはこのスタイルガイドを元に作られている
- Rails style guide 和訳 古い
- Rails style guideのGitHubリポジトリ
- RSpec Style Guide
- RSpecにおけるベストプラクティスとスタイル規約集
- RuboCop RSpecはこのスタイルガイドを元に作られている
- RSpec style guideのGitHubリポジトリ
- Fast Ruby
- 代替可能な記述のパフォーマンスを比較した一覧
- アルゴリズムではなくRubyの機能やメソッドでどちらが高速かという観点で比較している
- Fasterrerという静的コード解析ツールがある。Fastererメモも参照。
- Performance :: RuboCop Docsをみると、RuboCop Performanceも対応しているようなので、
fasterer
gemではなくrubocop-performance
gemを使えば良いのではないかと思う。
コマンド
Rails 6.1.3で確認。
- bin/rails about
bin/rails action_mailbox
bin/rails action_text
bin/rails active_storage
bin/rails app:template
- プロジェクトにテンプレートを適用するコマンド。詳細:Rails アプリケーションのテンプレート - Railsガイド
bin/rails app:update
- Railsのアップデートを行うコマンド
- bin/rails assets
- bin/rails cache_digests
- bin/rails console
- bin/rails credentials
- bin/rails secret
- 旧コマンド:
bin/rails secrets
、bin/rails encrypted
- bin/rails db
bin/rails dbconsole
- RDBのクライアントを起動する
bin/rails destroy
bin/rails dev:cache
- 開発環境でキャッシュのオンオフを切り替える
- bin/rails generate
bin/rails initializers
- イニシャライザの一覧を表示するコマンドらしい
- bin/rails log:clear
bin/rails middleware
- 利用しているRackミドルウェアを一覧表示する
bin/rails new
- bin/rails notes
bin/rails restart
- Railsを再起動する。
touch tmp/restart.txt
と同じ。
- Railsを再起動する。
- bin/rails routes
- bin/rails runner
- bin/rails server
- bin/rails stats
bin/rails time:zones
- タイムゾーンを一覧表示する
bin/rails tmp:clear
tmp/cache
、tmp/sockets
、tmp/screenshots
の中身を削除する- 個別に削除したい場合は
bin/rails tmp:cache:clear
のようにする bin/rails tmp:ceate
は上記ディレクトリを作成するコマンド
bin/rails version
- 利用しているRailsのバージョンを表示する
- bin/rails webpacker
bin/rails yarn:install
- yarnを使ってJavaScriptの依存パッケージをインストール。
bin/yarn install
、yarn install
との差異はよくわからない。
- yarnを使ってJavaScriptの依存パッケージをインストール。
bin/rails zeitwerk:check
- Zeitwerkでロードできるファイル名やクラス名になっているかチェックする