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 |
ふぅー。
コメント