前書き
Rails5からrakeコマンドからrailsコマンドに移り変わりました。そこで、自分用のメモとしてRailsコマンドをまとめました。他の人にも参考になれば嬉しいです。
コントローラー編
コントローラーを作るコマンド
ここではTopsControllerを作ると仮定します。
$ rails g controller tops
結果
create app/controllers/tops_controller.rb
invoke erb
create app/views/tops
invoke test_unit
create test/controllers/tops_controller_test.rb
invoke helper
create app/helpers/tops_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/tops.coffee
invoke scss
create app/assets/stylesheets/tops.css.scss
- app/controllers/tops_controller.rb
- TopsControllerクラス本体
- test/controllers/tops_controller_test.rb
- TopsController固有のテストスクリプト
- test/controllers/tops_controller_test.rb
- TopsController固有のビューヘルパー
- app/assets/javascripts/tops.coffee
- TopsController固有のCoffeeScript
- app/assets/stylesheets/tops.css.scss
- TopsController固有のSCSS
モデル編
モデルを作るコマンド
ここではTopモデルを作り、そのTopモデルに関するDBのテーブルのカラムがカラム名: name, 型: text であると仮定します。
$ rails g model top name:text
結果
invoke active_record
create db/migrate/20171113101911_create_tops.rb
create app/models/top.rb
invoke test_unit
create test/models/top_test.rb
create test/fixtures/tops.yml
- db/migrate/20171113101911_create_tops.rb
- Topモデル固有のマイグレーションファイル
- app/models/top.rb
- モデルクラス(topsテーブルを操作するためのモデル本体)
- test/models/top_test.rb
- モデルクラスをテストするためのスクリプト
- test/fixtures/tops.yml
- テストデータを投入するためのフィクスチャファイル
カラムを追加するMigrationファイルを作成
$ rails g migration AddContentToTop content:text
結果
invoke active_record
create db/migrate/20171113102729_add_content_to_top.rb
class AddContentToTop < ActiveRecord::Migration
def change
add_column :tops, :content, :text
end
end
このように、topsテーブルにtext型のcontentカラムを追加するマイグレーションファイルが作られます。
カラムを削除するMigrationファイルを作成
$ rails g migration RemoveContentFromTop content:text
結果
invoke active_record
create db/migrate/20171113102930_remove_content_from_top.rb
class RemoveContentFromTop < ActiveRecord::Migration
def change
remove_column :tops, :content, :text
end
end
このように、topsテーブルからtext型のcontentカラムを削除するマイグレーションファイルが作られます。
データベース編
ここでは、以下のようなデータベースを扱うと仮定します。
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
host: localhost
development:
<<: *default
database: Line_development
test:
<<: *default
database: Line_test
データベースに接続
$ rails dbconsole
Railsアプリが接続しているデータベースに接続します。この場合だと、上記のmysql2にユーザーがrootで接続します。
データベースの作成
$ rails db:create
結果
Created database 'Line_development'
Created database 'Line_test'
2つのデータベースが作られます
データベースの削除
$ rails db:drop
Dropped database 'Line_development'
Dropped database 'Line_test'
2つのデータベースが削除されます
データベースのテーブルレイアウトを作成
$ rails db:migrate (VERSION=20171113101911)
db/migrate/以下のマイグレーションファイルを参照し、データベースのレイアウトが作られます。VERSIONオプションを用いると、特定のマイグレーションファイルのみを実行します。オプションがなければ全てのマイグレーションファイルが実行されます。
データベースをリセットする
$ rails db:migrate:reset
上記の db:drop, db:create, db:migrateの一連の流れを実行します。
データベースのテーブルレイアウトを作成したものを取り消し
$ rails db:rollback (STEP=3)
実行されたマイグレーションファイルをdb/schema.rbを参照して取り消します。STEPオプションを用いると、取り消すマイグレーションファイルの数を指定することができます。上の例だと、最新の状態から3つのマイグレーションファイルを取り消します。オプションがなければ最新の状態のマイグレーションファイルだけ(1つだけ)が取り消されます。
データベースのレイアウトを取り消してから再び作成
$ rails db:rollback:redo (STEP=3)
上記のrails db:rollbackとrails db:migrateをセットにしたものです。マイグレーションファイルを一旦取り消してから再び実行します(redo)。STEPオプションはrails db:rollbackと同様です。
データベースにダミーデータを追加する1 (db/seeds.rbを利用)
$ rails db:seed
db/seeds.rbファイルを実行します。
Top.create(content: "A")
この場合だと、topsテーブルにcontentカラムの値がAのレコードが追加されます。(id, created_at, updated_atは自動的に挿入されます。)
データベースにダミーデータを追加する2 (test/fixtures/tops.ymlを利用)
$ rails db:fixtures:load (FIXTURES=tops)
test/fixtures/tops.ymlファイルを実行します。FIXTURESオプションを利用すると、実行するファイルを指定できます。オプションがなければ、test/fixtures/以下のファイル全てが実行されます。
データベースを参照してschema.rbを生成する
rails db:schema:dump
現在のデータベースを参照して、schema.rbファイルが更新されます。
schema.rbを参照してSQLのスクリプト文を生成する
rails db:structure:dump
schema.rbファイルに基づくstructure.sqlファイルが生成されます。
例
class CreateGroups < ActiveRecord::Migration[5.1]
def change
create_table :groups do |t|
t.string :name
t.timestamps
end
end
end
上記のようなマイグレーションファイルを実行してからrails db:structure:dump
コマンドを実行すると
DROP TABLE IF EXISTS `groups`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `groups` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
このような、マイグレーションファイルを満たすSQLスクリプトファイルが生成されます。
その他の便利なコマンド
コンソールを実行
$ rails console
コンソールを実行できます。Active::Recordを使ってデータベースにレコードを追加するときによく使いますね!
キャッシュの削除
$ rails tmp:create:clear
/tmp/cache/ディレクトリ以下に生成されたキャッシュを削除します
秘密トークンの設定
$ rails secret
結果
c3bcedd29a4c60898047e2d6b347c4f0e45a3fb25786bf56385bae50a7fd5fa03fecb25f5c3a01a818985a226dc1f625facfa79de0f00604b4af1b32d1b903f9
このように、秘密トークンを生成することができます。
ルーティングの確認
$ rails routes
ルーティングの一覧を確認することができます。
アセットをコンパイル
$ rails assets:precompile (RAILS_ENV=production)
アセットをコンパイルすることができます。これで本番環境で表示させる準備ができます。
アプリやActive Recordで利用できるタイムゾーンの一覧を確認
$ rails time:zones:all
結果
* UTC -11:00 *
American Samoa
International Date Line West
Midway Island
...
...
...
* UTC +09:00 *
Osaka
Sapporo
Seoul
Tokyo
Yakutsk
* UTC +09:30 *
Adelaide
Darwin
...
...
...
このように、タイムゾーンの一覧を確認することができます。
あとがき
調べてみると知らなかったコマンドやオプションがたくさんありました。少しでも役に立ったという方は是非
いいね
お願いします。