rails  / rake / sqlite3コマンド

## tl;dr
railsの学習中に見かけた各種コマンドをメモしておく。

## rails/rakeコマンド
```
$ rails
The most common rails commands are:
 generate     Generate new code (short-cut alias: "g")
 console      Start the Rails console (short-cut alias: "c")
 server       Start the Rails server (short-cut alias: "s")
 test         Run tests except system tests (short-cut alias: "t")
 test:system  Run system tests
 dbconsole    Start a console for the database specified in config/database.yml
              (short-cut alias: "db")
 new          Create a new Rails application. "rails new my_app" creates a
              new application called MyApp in "./my_app"

All commands can be run with -h (or --help) for more information.

Rails:
  console
  dbconsole
  destroy
  generate
  new
  runner
  secrets:edit
  secrets:setup
  server
  test
  version

Rake:
  about
  app:template
  app:update
  assets:clean[keep]
  assets:clobber
  assets:environment
  assets:precompile
  cache_digests:dependencies
  cache_digests:nested_dependencies
  db:create
  db:drop
  db:environment:set
  db:fixtures:load
  db:migrate
  db:migrate:status
  db:rollback
  db:schema:cache:clear
  db:schema:cache:dump
  db:schema:dump
  db:schema:load
  db:seed
  db:setup
  db:structure:dump
  db:structure:load
  db:version
  dev:cache
  initializers
  log:clear
  middleware
  notes
  notes:custom
  restart
  routes
  secret
  stats
  test
  test:db
  test:system
  time:zones[country_or_offset]
  tmp:clear
  tmp:create
  yarn:install
```

### サーバ起動
Webサーバ(Puma)を起動する。

```bash:ターミナル
$ rails s
```
### ルーティング表示
config/routes.rbに定義されているルーティングを表示する。

```bash:ターミナル
$ rake routes
```

### データベース作成
config/database.ymlに定義されているデータベースを作成する。

```bash:ターミナル
$ rake db:create
```

### マイグレーション実行
db/migrate/***.rbに定義されている内容を実行します。

```
$ rake db:migrate
```

### コントローラ作成
新規にコントローラを作成する時に関連ファイルもまとめて作成してくれます。

```bash:ターミナル
$ rails g controller users#index
```

### モデル作成
新規にモデルを作成する時に関連ファイルもまとめて作成してくれます。

```bash:ターミナル
$ rails g model User name:string message:text
```

### Scaffoldingでアプリの雛形作成

```sh:ターミナル
$ rails g scaffold diary title:string body:text
```

### DBコンソール起動
データベースの操作を行いたい場合に便利そうです。

```
$ rails dbconsole
sqlite> select * from users limit 10;
...
sqlite> .exit
```

### テストデータ作成
test/fixtures/***.ymlに定義されている内容でテストデータを作成します。

```bash:ターミナル
$ rake db:fixtures:load
```

### Railsコンソール起動
rails自体を実行してみたい場合に便利そうです。

```bash:ターミナル
$ rails c

irb(main):001:0> User.all
irb(main):002:0> user = User.find(1)
irb(main):003:0> user.name
irb(main):004:0> user.message
irb(main):005:0> user = User.new
irb(main):006:0> user.id = 3
irb(main):007:0> user.name = 'this is name.'
irb(main):008:0> user.message = 'this is message.'
irb(main):009:0> user.save
irb(main):010:0> user = User.find(3)
irb(main):011:0> user.name = 'it is name.'
irb(main):012:0> user.save
irb(main):013:0> user = User.find(3)
irb(main):014:0> user.destroy
irb(main):015:0> exit
```

## sqlite3
railsのデフォルトDBの操作方法

### SQLインタプリタ起動
```
$ sqlite3 db/hoge.sqlite3
sqlite> ...
sqlite> .exit
```

### ダンプ
```
$ sqlite3 db/hoge.sqlite3 .dump
```

### テーブル一覧の確認
```
sqlite> .tables
ar_internal_metadata users schema_migrations   
```

### テーブル定義の確認
```
sqlite> .schema users
CREATE TABLE IF NOT EXISTS "users" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
  "name" varchar, 
  "message" text, 
  "created_at" datetime NOT NULL, 
  "updated_at" datetime NOT NULL
);
```

### ダンプ (テーブル指定)
```
sqlite> .dump users
```

### インタプリタ終了
```
sqlite> .exit
sqlite> .quite
```