Railsインストール〜アプリ作成手順メモ (Mac)
Ruby on Railsで回り道して簡単なアプリができる工程を理解するメモ
インストール準備
$ rbenv install 2.5.3
rbenvのバージョンが古くてできなかった
$ rbenv install --list
どのバージョンのインストールができるか確認
やっぱり2.5.3はなかった
$ brew update
$ brew install rbenv
rbenvのインストールをしなおそうとしたけど既にインストールはされているからエラー
$ brew reinstall rbenv
再インストールはこれでできる
$ echo 'eval "$(rbenv init -)"' \>\> ~/.bash\_profile
rbenv の初期化スクリプトを .bash_profile へ追加する(PATHを通す)
Windowsだったら・・・
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' \>\> ~/.bash\_profile
(export PATH=\$PATH:追加したいコマンド検索パス)が必要。
そのあとMacと同じように
$ echo 'eval "$(rbenv init -)"' \>\> ~/.bash\_profile
参考: https://qiita.com/soarflat/items/d5015bec37f8a8254380 https://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/
$ source ~/.bash_profile
sourceコマンドを実行してPATHを通す
$ rbenv install 2.5.3
やっとできた
$ rbenv global 2.5.3
今使ってるバージョンから2.5.3に切り替え
$ gem install bundler --no-document
bundlerのインストール
--no-document:ドキュメントをインストールしないため、早い
$ gem install rails --no-document
Railsのインストール
インストールとアプリの作成
$ rails new sample
$ cd sample
$ rails g scaffold book
scaffoldは、アプリケーションにおける必要な機能であるモデル・ビュー・ルーティング・マイグレーション・コントローラー(CRUD)を一気につくる(すごい)
ここではbookという名前のひとつのサービスがscaffoldによってできている
Rails generateコマンドについて
$ rails generate GENERATOR [args] [options]
Laravelでいうartisanコマンド
モデルやマイグレーション生成したり、とにかくなんでも自動生成してくれる便利なもの
generateをgと略せる
$ rails db:create
$ rails db:migrate
DB作成してマイグレーション
マイグレーション機能の役割 マイグレーション機能をひと言で説明すると、「SQLを書くことなくRubyでデータベース内にテーブルを作成することができる機能」です。
$ rails server
サーバー起動。http://localhost:3000/books に飛ぶと、アプリが表示される。
/booksなんて記載した覚えがないのに、実はマイグレーションした時点で/config/route.rbにrouteが自動で記載されている
注意 つくったのは「book」だけど、urlはbooks!!
機能はつくれたけれどわかりづらい・・・
$ rails g scaffold book
だとどんな機能ができたのかわかりづらい。
このコマンドだとid, created_at, updated_atのカラムしかないから確認しづらいから。
もっとわかりやすいCRUDを
例えば、bookではなく
$ rails g scaffold novel name:string author:string
でnovelをつくる。
bookと違うのが、データ型を指定してnameカラムとauthorカラムを生成しているところ。
その後さっきと同様に
$ rails db:create; rails db:migrate
(DB作成とmigrate一気にできる!)
$ rails server
後にhttp://localhost:3000/novelsに飛ぶと、
NameとAutherの作成、詳細確認。編集、削除ができるアプリが作成されている。bookでもこれが作られていたけれどわかりづらかっただけ。
/db/schema.rbを見てみると、
ActiveRecord::Schema.define(version: 2018_11_09_105024) do create_table "books", force: :cascade do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "novels", force: :cascade do |t| t.string "name" t.string "author" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end
とこれもまた自動で記述されているのがわかる。
テーブル(ここではbooksとnovelsの2つ)の構造は/db/schema.rb内に記述される。
テーブルの中身を表示
テーブル内にどんなレコードが入っているか表示したいときはrails consoleコマンドを使う
$ rails c
で起動。
Novel.all
と入力すれば、
=> #<ActiveRecord::Relation [#<Novel id: 1, name: "test1", author: "test1", created_at: "2018-11-09 10:51:49", updated_at: "2018-11-09 10:52:50">]>
と返ってきて、中身がわかる。
感想
ここ2ヶ月はLaravelを中心に勉強していたけど、今日初めてRailsをちゃんと触ってみた。似ているようで似ていない。 Railsの勉強をすることで同じことを違う手順でしているようなイメージ。Laravelの機能と照らし合わせながら勉強したら、ひとつひとつの仕組みをより理解できそう。 memo: Rails Girls Okinawaの記事はまた別に書く。