Rubyに関するカテゴリー。
Ruby 【Ruby on Rails】比較 : Ruby on RailsとNext.js、どちらを選ぶべきか
こんにちは、かつコーチです。Ruby on Rails編とJavaScriptエコシステム編(Next.js編)、両方の記事を書き終えたので、今回は総まとめとして両者を比較します。「新しく受託案件やSaaSを作るとき、Ruby on Rai...
Ruby 【Ruby on Rails】シンプルなTodoアプリを作ってみる
こんにちは、かつコーチです。これまでルーティング・ActiveRecord・バリデーション・アソシエーション・Service Objectと、Railsの要素を1つずつ解説してきました。今回はその総まとめとして、シンプルなTodoアプリを実...
Ruby 【Ruby on Rails】プロジェクトのディレクトリ構成のベストプラクティス
こんにちは、かつコーチです。前回まで、Service ObjectやConcernといった設計パターンを解説してきました。これらのクラスを実際に配置する際、標準のappディレクトリだけでは受け皿が足りなくなります。今回は、大規模なRails...
Ruby 【Ruby on Rails】Concern(関心の分離)の使い方
こんにちは、かつコーチです。複数のモデルやコントローラに同じようなコードが増えてきたとき、RailsにはConcernという共通化の仕組みが用意されています。ActiveSupport::Concernを使うと、モジュールの形で関心事を切り...
Ruby 【Ruby on Rails】Fat Controller/Fat Modelを避けるためのService Objectパターン
こんにちは、かつコーチです。Railsで開発を続けていると、コントローラやモデルがどんどん肥大化していく問題に必ず突き当たります。いわゆるFat Controller(処理を詰め込みすぎたコントローラ)やFat Model(責務が多すぎるモ...
Ruby 【Ruby on Rails】rails consoleを使いこなすデバッグ術
こんにちは、かつコーチです。バグの原因を探すとき、いちいち画面を操作して確認するのは時間がかかりますよね。私も初心者の頃は、コードを1行変えるたびにブラウザをリロードして確認していました。この記事では、rails consoleを使ってモデ...
Ruby 【Ruby on Rails】ActiveRecord::RecordNotFoundで落ちる画面を防ぐ方法
こんにちは、かつコーチです。存在しないIDのURLにアクセスしたら、真っ白なエラー画面が表示されて困った経験はありませんか。本番環境でこの画面をユーザーに見せてしまうと、サービスへの信頼を損ねてしまいます。この記事では、ActiveReco...
Ruby 【Ruby on Rails】マイグレーションが失敗して困った話と対処法
こんにちは、かつコーチです。マイグレーションを実行したら、途中で止まって動かなくなった経験はありませんか。私は開発中に何度もこの状況に陥り、原因が分からず焦った経験があります。この記事では、マイグレーション失敗時の代表的な症状と、実際に私が...
Ruby 【Ruby on Rails】Railsでよく出るエラーと解決法まとめ
こんにちは、かつコーチです。Railsを触り始めたばかりの頃は、見慣れないエラー画面に戸惑うことが多いですよね。私自身も学習初期は、エラーメッセージを読まずにコードを闇雲に書き換えて時間を浪費していました。この記事では、初心者が特につまずき...
Ruby 【Ruby on Rails】環境変数とcredentials.ymlで秘密情報を管理する
こんにちは、かつコーチです。APIキーやパスワードをどこに書けばいいか、迷ったことはありませんか。うっかりコードに直書きしてGitHubに公開してしまうと、大きな事故につながります。この記事では、Railsのcredentials.ymlと...
Ruby 【Ruby on Rails】RailsアプリをRenderにデプロイする方法
こんにちは、かつコーチです。「作ったアプリを世界に公開してみたい」という気持ちはあっても、デプロイの手順が分からず止まってしまう方は多いです。この記事では、無料枠から使えるホスティングサービスRender(インフラ管理を意識せずアプリを公開...
Ruby 【Ruby on Rails】System SpecでE2Eテストを書く
こんにちは、かつコーチです。モデル単体のテストは書けても、ブラウザ操作を再現するE2Eテストとなると、設定の複雑さで挫折した経験がある方も多いのではないでしょうか。この記事では、CapybaraベースのSystem Specの設定と、実践的...
Ruby 【Ruby on Rails】RSpecでモデルのテストを書く
こんにちは、かつコーチです。「テストは大事」と分かっていても、何をどこまで書けばいいのか迷った経験はありませんか。この記事では、RSpecの導入からモデルのバリデーション・アソシエーションのテストの書き方までを整理します。FactoryBo...
Ruby 【Ruby on Rails】CSRF対策とStrong Parametersでセキュリティを守る
こんにちは、かつコーチです。「Railsはデフォルトで安全」とよく言われますが、その裏でどんな仕組みが動いているか説明できますか。この記事では、protect_from_forgeryによるCSRF対策と、Strong Parameters...
Ruby 【Ruby on Rails】Deviseで本格的な認証機能を実装する
こんにちは、かつコーチです。自前で認証機能を作っていると、パスワードリセットやメール確認、アカウントロックなど、実装すべき機能がどんどん増えていきます。この記事では、認証gemの定番であるDeviseの導入手順と、実務でよく使う設定を整理し...
Ruby 【Ruby on Rails】has_secure_passwordで認証機能を実装する
こんにちは、かつコーチです。「ログイン機能を作りたいけど、Deviseのような大きなgemを入れるほどでもない」そんなときに便利なのが、Rails標準の機能であるhas_secure_passwordです。パスワードのハッシュ化や照合といっ...
Ruby 【Ruby on Rails】N+1問題とincludesでの解決方法
こんにちは、かつコーチです。開発中は問題なく動いていたのに、本番データが増えた途端に画面表示が極端に遅くなる。Railsを使っていると一度は経験する現象ですが、その原因の多くがN+1問題(関連データを取得する際に、1件ごとに追加のクエリが発...
Ruby 【Ruby on Rails】スコープとクエリメソッドで検索条件を整理する
こんにちは、かつコーチです。コントローラのアクションが増えてくると、whereやorderを使った検索条件があちこちに散らばりがちです。同じような条件を何度も書いていたり、条件が複雑になって可読性が落ちていたりする経験はありませんか。Rai...
Ruby 【Ruby on Rails】バリデーションの基本
こんにちは、かつコーチです。フォームからデータを保存する機能を作っていると、「空欄のまま保存されてしまう」「同じメールアドレスで何人も登録できてしまう」といった困りごとに出会います。こうした不正なデータの保存を防ぐ仕組みが、Railsのバリ...
Ruby 【Ruby on Rails】アソシエーション(has_many・belongs_to)の書き方
こんにちは、かつコーチです。Railsでモデルを作っていると、必ず出てくるのが「モデル同士の関連付け」です。たとえば「記事にはたくさんのコメントがつく」「コメントは1つの記事に属する」といった関係を、Railsではアソシエーション(モデル同...