RailsTutorialを進めていく中で躓いたことや、ポイントだと感じたこと

RailsTutorialを進める中で躓いたポイントや解決策、Herokuデプロイの問題、Git関連のトラブル、テストエラーの対処法などをまとめました。初心者の方に役立つRails学習のヒントを紹介します。

1章

Herokuで差分を反映させ、起動するコマンド

1章まとめ RailsTutorial1章より

  • Ruby on Railsとは、Web開発のためのフレームワークであり、Rubyプログラミング言語によって記述されている。事前設定済みのクラウド環境を利用することで、Railsのインストール、アプリケーションの生成、生成されたファイルの編集を簡単に行うことができる。Railsにはrailsという名前のコマンドラインコマンドがあり、rails newで新しいアプリケーションを生成したり、rails serverでローカルサーバーを実行したりできる。コントローラのアクションを追加したり、ルートルーティングを変更したりするだけで「hello, world」アプリケーションを作成できる
  • Gitによるバージョン管理を導入し、Bitbucketの非公開リポジトリにプッシュする理由は、データの喪失を防止し、他の開発者との共同作業を行えるようにするため。作成したアプリケーションをHerokuの本番環境にデプロイした

2章

2章でGit関連で躓いたこと

  • ファイルの範囲指定がうまくいっていなかった
  • ディレクトリでコンフリクトが起きていたので、ローカルとリモートで削除してraiil s
  • masterとの差分を反映出来ていなかったので、deployブランチでmasterをpullして解決しました。

Herokuでデプロイが出来ていない問題

ローカルでは問題なく動いていたので原因として考えられるのは、Herokuの本番環境でデータベースのマイグレーションを行なっていないこと
をターミナルより実行して、本番データベースのマイグレーションを行い、次にホームページからHerokuのデプロイを行なったところデプロイが出来ました。

2章まとめ RailsTutorial2章より

  • Scaffold機能でコードを自動生成すると、Webのあらゆる部分からモデルデータにアクセスしてやりとりできるようになる。Scaffoldは何よりも手っ取り早いのがとりえだが、これを元にRailsを理解するには向いていない。RailsではWebアプリケーションの構成にMVC (Model-View-Controller) というモデルを採用している。Railsが解釈するRESTには、標準的なURLセットと、データモデルとやりとりするためのコントローラアクションが含まれている。
  • Railsではデータのバリデーション (validation) がサポートされており、データモデルの属性の値に制限をかけることができる。Railsには、さまざまなデータモデル同士を関連付けを定義するための組み込み関数が多数用意されている。Railsコンソールを使うと、コマンドラインからRailsアプリケーションとやりとりすることができる

3章

StaticPagesコントローラを生成する(静的ページの作成)コマンド

3章まとめ RailsTutorial3章より

  • 新しいRailsアプリケーションをゼロから作成したのはこれで3度目。今回も必要なgemのインストール、リモートリポジトリへのプッシュ、production環境まで行った。コントローラを新規作成するためのrailsコマンドはrails generate controller ControllerName アクション名 (省略可)。新しいルーティングはconfig/routes.rbファイルで定義する。Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) が使える
  • 常に自動化テストを使って新機能開発を進めることで、自信を持ってリファクタリングできるようになり、回帰バグも素早くキャッチできるようになる。テスト駆動開発では「red ・ green ・REFACTOR」サイクルを繰り返す。Railsのレイアウトでは、アプリケーションのページの共通部分をテンプレートに置くことでコードの重複を解決することができる

4章

pメソッド

文字列は、 に囲まれて出力されるため、特殊文字(\nや\t)がそのまま出力される

empty?メソッド

の中身が半角スペースであってもfalseとなる

4章まとめ RailsTutorial4章より

  • Rubyは文字列を扱うためのメソッドを多数持っている。Rubyの世界では、すべてがオブジェクトである。Rubyではdefというキーワードを使ってメソッドを定義する。Rubyではclassというキーワードを使ってクラスを定義する。Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) も使える。Rubyの組み込みクラスには配列、範囲、ハッシュなどがある。Rubyのブロックは (他の似た機能と比べ) 柔軟な機能で、添え字を使ったデータ構造よりも自然にイテレーションができる
  • シンボルとはラベルである。追加的な構造を持たない (代入などができない) 文字列みたいなもの。Rubyではクラスを継承できる。Rubyでは組み込みクラスですら内部を見たり修正したりできる。「deified」という単語は回文である

5章

rails testでつまずいたこと

header.html.erb ファイルでの文がとなっていたため、root_path が見つからないとエラーが出ていた
  • header.html.erb

5章まとめ RailsTutorial5章より

  • HTML5を使ってheaderやfooter、logoやbodyといったコンテンツのレイアウトを定義しました。Railsのパーシャルは効率化のために使われ、別ファイルにマークアップを切り出すことができます。CSSは、CSSクラスとidを使ってレイアウトやデザインを調整します。Bootstrapフレームワークを使うと、いい感じのデザインを素早く実装できる。SassとAsset Pipelineは、(開発効率のために切り分けられた) CSSの冗長な部分を圧縮し、本番環境に最適化した結果を出力する
  • Railsのルーティングでは自由にルールを定義することができ、また、その際に名前付きルートも使えるようになる。統合テストは、ブラウザによるページ間の遷移を効率的にシミュレートする

6章

Userモデル

  • Model-View-Controller (MVC)のMに該当する
  • Rails にはマイグレーション(Migration)があるため、データ定義をRubyで行うことができる。そのため、SQLのDDL(CREATE(表の創成、定義)、DROP(表の削除)など)を新たに学ぶ必要がない。開発環境では,本番環境ではを用いる

Userモデルを生成

マイグレーションのロールバック(rollback)

オブジェクトの継承の確認

emailに関するエラー情報のみ取得

配列の簡単な作成メソッド %w

正規表現エディタ Rubular

6章まとめ RailsTutorial6章より

  • マイグレーションを使うことで、アプリケーションのデータモデルを修正することができる。Active Recordを使うと、データモデルを作成したり操作したりするための多数のメソッドが使えるようになる。Active Recordのバリデーションを使うと、モデルに対して制限を追加することができる。よくあるバリデーションには、存在性・長さ・フォーマットなどがある。。正規表現は謎めいて見えるが非常に強力である。
  • データベースにインデックスを追加することで検索効率が向上する。また、データベースレベルでの一意性を保証するためにも使われる。has_secure_passwordメソッドを使うことで、モデルに対してセキュアなパスワードを追加することができる。
💡
この記事はこちらのクロスポストです

小幡 十矛(Obata Tomu)|価値を共創するエンジニア
東京を拠点に、アプリ開発・新規事業立ち上げ・ブランドづくりに取り組んでいます。
2021年にサイバーエージェントへ新卒入社後、ABEMA Live や AmebaブログのiOSアプリ開発を担当
現在はフリーランスとして、複数の新規プロダクトやリアル店舗の立ち上げに挑戦中です。
🎯 Mission|人の挑戦を加速する仕組みをつくる ── アイデアを形にし、前に進める“土台”や“場”を共創する
📌 「リアルな場 × デジタル」の可能性を探求し、新しい挑戦が生まれる土壌を育てる
🔹 エンジニアリング × ビジネスの視点から、アイデアを形にし、成長を支えていく
🔹 実店舗オーナーを目指し、オーダースーツ・ドライヘッドスパ・セレクトショップの複合店舗の立ち上げにも挑戦中
👥 特に、社会人1〜5年目くらいで
「やりたい気持ちはあるけど、最初の一歩に迷っている」方へ。 「自分の可能性をもっと広げたい」 「モヤっとしたアイデアがあるけど、どう進めていいかわからない」 そんなフェーズにいる方と、一緒に考えたり、手を動かしたりできたら嬉しいです。
🌱 「挑戦したい20代」との出会いも、大切にしています。 「ちょっと話してみたいな」くらいの気持ちで、気軽に声をかけてもらえたら嬉しいです!🙌
📷 Instagram(リアルイベントや趣味の発信中心): https://www.instagram.com/tomu28creator
🌐 詳しいプロフィールはこちら https://obata-tomu.jp/