はじめに
先日から、Ruby on Railsを学び始めました。
豊富な機能に圧倒され、中々理解が進みませんが、分かったことを一つずつアウトプットしていき、なんとか理解できるようになりたいです。
今回は、scaffold
コマンドを使って簡単なメモアプリを作るまでの手順をまとめました。
環境
Mac OS Catalina 10.15
Ruby 2.6.3
Rails 6.0.0
手順
今回の流れは以下の通りです。
Raislアプリケーションを新規に作成する
scaffold
を使ってみるデータベースをマイグレーションする
本当にできているか、確認してみる
1. Raislアプリケーションを新規に作成する
以下のコマンドを実行することで、Railsアプリケーションに必要な基本的なファイル群が用意されます🤭 今回は、アプリケーションの名前をmemoにします。
rails new memo_app
しばし待って以下のように、成功した旨が表示されると思います。
Webpacker successfully installed
すると、新たなmemoディレクトリが誕生しているはずです。
これで第1段階終了です。
2. scaffold
を使ってみる
scaffold
とは、CRUDの機能を一気に作ってくれるコマンドです。
CRUDとは Create(新規作成) Read(読み出し) Update(更新) Delete(削除) の4つの機能のことをいいます。
これが一つのコマンドでできるわけです・・・恐ろしい🥶
では、先ほど、作成したmemoディレクトリに移動して、実行してみましょう。
scaffold
には以下のように、モデル名(DBの構造を記述する仕組み)、カラム名:データ型...
を渡してあげます。
今回は、文字列型の「title」と「body」カラムを持つ「memo」モデルを作成します。
rails generate scaffold memo title:string body:string
ルーティングも自動で設定してくれます・・・恐ろしい🥶
これで第2段階が終了です。
3. データベースをマイグレーションする
データベースをマイグレーションするとはどういうことか。 データベースになんらかの操作を行うときは、SQL文を実行します。
しかし、Railsはマイグレーションスクリプトというデータベースを操作するスクリプトファイルを作成してくれます。これは、データベースになんらかの操作が行われる度に作成されていきます。つまり、最初に作成されたファイルから順番に読み込んでいくことで、現在のテーブルの状態を作成することができるのです。
マイグレーションを行う利点として、データベースの言語がなんであれ、操作が可能になることが挙げられます。
では、以下のコマンドを実行しましょう。これにより、最初から最新までのマイグレーションを適用させます。
❯ rails db:migrate == 20191023095136 CreateMemos: migrating ====================================== -- create_table(:memos) -> 0.0019s == 20191023095136 CreateMemos: migrated (0.0020s) =============================
これで、第3段階が終了です。
4. 本当にできているか、確認してみる
本当にメモアプリができているのでしょうか確認してみましょう。
それには、サーバを起動してやる必要がありますので、以下のコマンドで起動します。
rails server => Booting Puma => Rails 6.0.0 application starting in development => Run `rails server --help` for more startup options Puma starting in single mode... * Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://localhost:3000 Use Ctrl-C to stop
上記の状態で、http://localhost:3000/memos にアクセスしてみましょう。 以下のようになれば成功です。
しっかりと、作成、内容表示、削除ができています‼️
最後に
前回取り組んだSinatraでメモアプリを作成する課題では、とても苦戦したCRUD機能の実装ですが、Railsはこんなに簡単にできることに驚きです🤭
驚きを通り越して、恐さを感じました💦
まだまだ、分からないことだらけのRailsですが、このように自分なりにまとめてみると少しずつ分かっていく感じがありますね。
明日からも引き続き取り組んでいきます💪
参考
Ruby on Rails ガイド:体系的に Rails を学ぼう