Ruby on Railsの環境構築メモ

Ruby
スポンサーリンク

progateでRuby on Railsの基礎を勉強したものの、環境はprogateが用意してくれたものだったので、環境構築(主にデータベース周り)が分からず、調べながら実施した内容のメモです。
※手順はMacOSでのものです

railsをインストール

下記コマンド一発でインストール完了です。

$ gem install rails

データベースの準備

本格的に開発する際はMySQLとかPostgreSQLを使うようですが、お手軽に使えるSQLite3を利用します。
実は、MacOSには既にインストールされていました。

$ sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08

アプリケーションの雛形作成

railsコマンドで雛形を作成します。”-d sqlite3”は無くても良いみたい。(省略するとデフォルトでsqlite3になる)

$ rails new test -d sqlite3

データベースの作成

rails db:createコマンドで作成します。

$ rails db:create

開発で使用するデータベースファイルの実体は「db/development.sqlite3」になります。

続けてモデルを作成します。

$ rails g model test

生成される「db/migrate/xxxxx.create_tests.rb」を編集します。

class CreateTests < ActiveRecord::Migration[5.2]
  def change
    create_table :tests do |t|
      t.string :name
      t.text :description
      t.timestamps
    end
  end
end

データベースに反映します。

$ rails db:migrate

テーブルの作成をやり直す場合

カラムにNOT NULL制約を付け忘れたので作り直したい!といった場合、まずはmigrationファイルを書き直します。

class CreateTests < ActiveRecord::Migration[5.2]
  def change
    create_table :tests do |t|
      t.string :name, null: false
      t.text :description, null: false
      t.timestamps
    end
  end
end

下記コマンドでデータベースをリセットします。

$ rails db:migrate:reset

内部的には、rails db:drop → rails db:create → rails db:migrate と順番に実施しているようです。

初期データの作成

db/seed.rbファイルに初期データの内容を記載します。

test = Test.new
test.name = "テスト1"
test.description = "テスト1概要"
test.save!

rails db:seedコマンドでファイルの内容をデータベースに反映します。

$ rails db:seed

データベースの内容を確認する

rails dbコマンドでデータベースへ接続できるので、あとはsqlite3のコマンドで中身を確認します。

$ rails db
> .tables
> select * from tests;
> .exit

初期データのリセット

データの内容を間違えた!やり直したい!ってときは、下記コマンドでリセットします。(リセットせずに再びrails db:seedを実行すると、リセットではなくデータが追加されちゃいます)

$ rails db:reset

内部では rails db:drop → rails db:create → rails db:schema.load → rails db:seed と実行するようです。

上記の通り、db:resetの場合はdb:migrateを実行していません。
なので、初期データの修正とあわせてテーブルの定義(migrationファイル)も修正した場合は、下記コマンドを実行する必要があります。

$ rails db:migrate:reset
$ rails db:seed

ふぅー。

 

コメント