3
3

More than 5 years have passed since last update.

Docker + Rails + MySQL + Vue で Todo アプリ作成 〜その1〜

Last updated at Posted at 2019-02-26

はじめに

前回: Docker + Rails で開発環境を作った。
せっかく作ったのに開発しないのはもったいないよね。
でもできることって限られてる。
ということで、TODOアプリを作ってみる

目標

  • trello
  • 今回はとりあえず、seed データを投入して、その一覧を表示させるとこまで。
  • タイトル詐欺してますね、「その1」では Vue は使いません(そこまでいけない)

1.準備

Docker を起動し、コンテナに接続していきます。

$ cd myapp
$ docker-compose up
$ docker ps

myapp_webmysqlCONTAINER ID を控える
そぞれのコンテナに接続をする。

web
$ docker exec -it CONTAINER_ID bash
root@CONTAINER_ID:/myapp#    これでOK
db
docker exec -it CONTAINER_ID bash
root@CONTAINER_ID:/# mysql -u root -p
Enter password:  # database.yml に記載したパスワード
mysql>     これでOK

2. Rails の操作

2.1 モデルを作る

Task モデルを作る。

web
# rails g model Task title:string context:string level:integer
# rails db:migrate
2.2 コントローラーも作る

こっちは Tasks
複数形であることに注目、Rails Tutorial で確かそう習った

# rails g controller Tasks

とりあえず一覧を見たい

tasks_controller.rb
class TasksController < ApplicationController
  def index
    @tasks = Task.all
  end

  def show
  end

  def new
  end

  def create
  end

  def edit
  end

  def update
  end

  def destroy
  end
end

ついでに他のも CRUD の7つも枠だけ用意しておく。

2.3 index で表示させる seed データを作る
seeds.rb
Task.create(
  [
    {
      title: 'task 001',
      context: 'hogehoge',
      level: '2',
    },
    {
      title: 'task 002',
      context: 'fugafuga',
      level: '3',
    },
    {
      title: 'task 003',
      context: 'piyopiyo',
      level: '1',
    },
  ],
)

web
# rails db:seed
2.4 seed データを作成したら db を覗く

MySQL 側でデータベース名を確認し
sequel pro で実際にデータが入っているか確認する。

db
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myapp_development  | # こいつを使うよ
| myapp_test         |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

終わったらコンテナごと exit しちゃう。

image.png
接続をしたら
image.png
やったぜ
次はこのデータを画面に表示させる。

3. View とその準備

さっき rails db:seed で作成したデータを表示させたい。
表示させるページは /tasks/(ルートページ)

3.1 ルーティング
routes.rb
Rails.application.routes.draw do
  root to: 'tasks#index'

  resources :tasks
end
3.2 View ファイルの作成

model, controller は rails g があるけど
view にはないらしい。
ので、手動で作っていく、

$ touch app/views/tasks/index.html.erb
$ touch app/views/tasks/show.html.erb
$ touch app/views/tasks/new.html.erb
$ touch app/views/tasks/edit.html.erb
index.html.erb
<h1>Your Tasks</h1>

<ul>
  <% @tasks.each do |task| %>
  <li><%= task.title %><%= task.context %></li>
  <% end %>
</ul>

Task.all の数だけ Task の持っている title と context を表示

...なんかだんだんモデルの作りがイケてない気がしてきた。

そしてローカルホストに接続して確認。

image.png
できた。
とりあえずこれでおしまい。
続きは次回。

参考

Railsでタスク管理ができるWebアプリを作成してみた(Rails入門)
【Ruby on Rails】ToDoアプリを簡単に作ってみる

ありがとうございます。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3