Ruby
mise で Ruby をインストールする方法:.ruby-version の使い方 mise install ruby@3.3.0 # インストール mise use ruby@3.3.0 # プロジェクトに固定(mise.toml に書き込まれる) ruby --version # 確認 mise はバージョン管理ツールで、Ruby を含む複数の…
RSpecのlet_it_be:test-profで高速化するDB生成の使い方 # let! を let_it_be に変えるだけ let_it_be(:user) { create(:user) } # グループ全体で1回だけ生成(let!はitの数だけ生成) let! との違い:let! は各 it の前に毎回DBへINSERTします。let_it_be…
Rails FactoryBot入門:RSpecで使うテストデータの作り方まとめ RSpec でテストを書くとき、テストデータを都度 User.create(name: "...") で作るのは手間がかかります。FactoryBot を使うと、モデルのデフォルトデータを一箇所に定義して create(:user) の…
Ruby メソッドチェーン実践:select・map・inject の活用パターン Ruby の Enumerable メソッドはチェーンでつなぐことで、複雑な処理を宣言的かつ簡潔に書けます。実際のコードでよく登場するパターンをまとめます。 カートの合計金額を計算する 在庫あり・…
Ruby 配列のソート:sort と sort_by の使い分け Ruby で配列を並べ替えるには sort と sort_by を使います。単純な並べ替えは sort、オブジェクトの特定の値でソートするなら sort_by が便利です。 早わかりまとめ メソッド 向いている用途 sort 要素を直接…
Ruby ハッシュの繰り返し:each・map・select の使い方 ハッシュのキーと値を繰り返し処理するには each・map・select などを使います。配列とほぼ同じメソッドが使えます。 早わかりまとめ メソッド 戻り値 向いている用途 each self キーと値を繰り返し処…
Ruby 配列の変換・集計:map・inject・flat_map の使い方 配列を別の形に変換したり、合計・グループ化したりするには map・inject・flat_map を使います。 早わかりまとめ メソッド 戻り値 向いている用途 map / collect 配列 各要素を変換した新しい配列を…
Ruby 配列の絞り込み:select・reject・find の使い方 配列から「条件に合う要素だけ取り出す」には select・reject・find などを使います。 早わかりまとめ メソッド 戻り値 向いている用途 select / filter 配列 条件に合う要素をすべて取り出す reject 配…
Ruby の繰り返し処理:each・times・map の使い分け Ruby の繰り返し処理は each・times・map などのメソッドで書きます。for 文より簡潔で Ruby らしい書き方になります。 早わかりまとめ メソッド 向いている用途 each 配列・ハッシュの全要素を処理する t…
Ruby の unless と if:違いと使い分け・後置記法まとめ Ruby の unless は「条件が偽のときに実行する」制御構文です。if !condition と同じ意味ですが、否定を明示せずに読みやすく書けます。 基本構文の比較 # if で否定を書く場合 if !logged_in redirec…
ActiveRecord N+1問題の解決:includes・preload・eager_loadまとめ N+1問題とは 関連を持つレコードをループで取得するとき、1回の一覧取得 + N件分の関連取得 = N+1回のSQLが発生する問題です。 posts = Post.all # SELECT * FROM posts (1回) posts.eac…
Rubyのバージョン管理:rbenv・miseの使い方と切り替え方法 プロジェクトごとにRubyのバージョンを切り替えるには rbenv または mise を使います。 どちらを選ぶか? 状況 おすすめ Rubyだけ使う rbenv Node.js・Python・Goも一緒に管理したい mise これから…
Active Record入門:検索・更新・リレーションの基本まとめ はじめに Active RecordはRailsのORMで、Rubyのコードでデータベースを操作できます。SQLを直接書かなくても User.where(name: "田中") のように書けば、対応するSQLが自動で発行されます。 この記…
RSpecのletとlet!:遅延評価と即時評価の違いと使い分け はじめに RSpecで頻繁に使う let と let! は、どちらもテストデータを定義するためのヘルパーです。しかし評価のタイミングが異なり、使い方を間違えるとテストが意図通りに動かないことがあります。 …
RSpec入門:インストールからモデルスペックの書き方まで はじめに RSpecはRubyのテストフレームワークで、Railsプロジェクトで最もよく使われています。describe・context・itを使って「何をテストするか」を自然言語に近い形で書けるのが特徴です。 この記…
Rails開発コマンド早見表:bundle / rake / rails の使い分けまとめ はじめに Railsを開発していると bundle exec rake db:migrate、rails db:migrate、bin/rails など似たようなコマンドがたくさん出てきます。この記事ではそれぞれの使い分けと、よく使う…
Rake入門:Rakefileの書き方からRailsでのカスタムタスク作成まで はじめに Rakeはタスクを定義して実行するためのRuby製ツールです。rake db:migrate や rake routes のようにRailsで日常的に使いますが、自分でタスクを定義してスクリプトを整理することも…
Bundler入門:Gemfile・bundle install・bundle execの使い方まとめ はじめに RubyやRailsのプロジェクトでgemを管理するとき、bundle install や bundle exec を使うことになります。何となく使っているけど仕組みがよくわからない、という方向けにBundler…
RuboCop導入入門:インストールから設定・git commit時の自動実行まで はじめに RuboCopはRubyのコードスタイルをチェックするlinterで、Rubyスタイルガイドに基づいてコードの問題を検出します。個人開発からチーム開発まで幅広く使われており、Railsプロジ…
RailsでOpenAPIを使ったコントローラー作成入門:Design-firstアプローチでGET・POST・PUT・DELETE対応 はじめに Design-firstアプローチとは、実装の前にAPIの仕様(OpenAPI YAML)を先に定義し、その仕様に合わせてコントローラーを実装する方法です。 フ…
Rails binding.pry実践:コントローラー・モデル・テストでのデバッグ はじめに binding.pry の基本的な使い方は「Rails binding.pry入門:セットアップと基本コマンドの使い方」で解説しています。 この記事ではコントローラー・モデル・RSpecでの実践的な…
Rails binding.pry入門:セットアップと基本コマンドの使い方 はじめに Railsの開発中にコードが期待通り動かないとき、puts で変数を出力しながらデバッグするのは効率が悪いです。binding.pry を使えば、コードが実行されているその場所で一時停止して、変…
Rails のDB操作コマンド入門:db:create から db:migrate まで はじめに Railsを使い始めると、データベース操作のコマンドが多くて混乱することがあります。 db:migrate と db:schema:load の違いがわからない db:reset と db:migrate:reset は何が違うの?…
RubyとRailsのバージョン確認方法:gem・bundler・rbenv・miseコマンド一覧 はじめに Rubyプロジェクトを始めるとき、既存のプロジェクトに参加するとき、エラーが起きたとき、まず確認するのがRubyとRailsのバージョンです。 この記事では ruby、rails、gem…