2022-08

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ではアソシエーション(モデル同...
Ruby

【Ruby on Rails】ActiveRecordの基本:モデルとCRUD操作

こんにちは、かつコーチです。Railsでデータを扱おうとすると、Post.create や Post.find といったコードを目にします。SQLを書いていないのに、なぜデータベースを操作できるのか。最初は不思議に感じるところだと思います。...
Ruby

【Ruby on Rails】マイグレーションの基本:テーブルを作成・変更する

こんにちは、かつコーチです。データベースにテーブルを作りたいとき、SQLを直接書かずに rails generate migration というコマンドを使うと聞いて、戸惑った経験はありませんか。私も最初は「なぜわざわざファイルを作ってから...
Ruby

【Ruby on Rails】アセットパイプライン(Propshaft/Importmap)を理解する

こんにちは、かつコーチです。CSSやJavaScriptを編集したのに画面に反映されない。昔のRails記事を参考にしたら Sprockets や Webpacker という単語が出てきて、今の構成と違う気がする。Rails 8を使い始めた...
Ruby

【Ruby on Rails】RESTfulなルーティング設計(resources)の考え方

こんにちは、かつコーチです。routes.rb に resources :posts と1行書くだけで、たくさんのルートが自動生成される。初めて見たとき「便利だけど、結局何が作られているのかわからない」と感じませんでしたか。私も最初は ra...
Ruby

【Ruby on Rails】ビュー(ERB)の基本とレイアウト

こんにちは、かつコーチです。Railsでコントローラまで作れるようになると、次にぶつかる壁が「ビュー」です。<%= %> と <% %> の違いがよくわからない。application.html.erb に書いた内容がなぜか各ページに反映さ...
Ruby

【Ruby on Rails】コントローラの基本:アクションとストロングパラメータ

こんにちは、かつコーチです。「フォームを送信したのに、エラーが出て保存できない」。Rails初心者がコントローラを書き始めたときによく経験するつまずきです。この記事では、コントローラの作り方・アクションの書き方に加えて、初心者がつまずきやす...
Ruby

【Ruby on Rails】ルーティングの基本:config/routes.rbの書き方

こんにちは、かつコーチです。「コントローラは書いたのに、画面が表示されない」。Rails初心者が最初につまずくポイントの一つが、このルーティングの設定です。この記事では、config/routes.rbの基本的な書き方と、rails rou...
Ruby

【Ruby on Rails】MVCとRailsのディレクトリ構成を理解する

こんにちは、かつコーチです。「rails newでフォルダはできたけど、どこに何を書けばいいのか分からない」。Rails初心者が最初にぶつかる壁の一つです。この記事では、Railsの設計の土台となるMVCという考え方と、実際のディレクトリ構...
Ruby

【Ruby on Rails】rails newでプロジェクトを作成する手順(Rails 8対応)

こんにちは、かつコーチです。「Railsの勉強を始めたいけど、環境構築でつまずいてしまう」という声をよく聞きます。この記事では、Rails 8を前提に、rails newコマンドでプロジェクトを作成し、実際にブラウザで画面を表示するまでの手...