あぼねこぶろぐ

プログラミングとデザインの技術向上ブログ

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でデータベース内にテーブルを作成することができる機能」です。

https://www.transnet.ne.jp/2015/12/29/rails%E5%88%9D%E5%BF%83%E8%80%85%E3%81%8C%E3%81%A4%E3%81%BE%E3%81%9A%E3%81%8D%E3%82%84%E3%81%99%E3%81%84%E3%80%8C%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%8Dcolnr/ より

$ 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の記事はまた別に書く。