LoginSignup
70
118

More than 3 years have passed since last update.

[Rails+Vue.js]に係るCRUD入門〜Part1:環境構築編〜

Last updated at Posted at 2019-08-17

Rails+Vue.js+Webpackerによる「Create, Read, Update, Destroy」処理のチュートリアルを記述する。
なお,前提知識として,Railsチュートリアル終了程度を想定する。

<概要>

■ 本記事の内容

■ 記事共通

<本文>

■ 追記: 初期設定の自動化

プロジェクトを生成からCSSフレームワークを導入(Materialize)までの項目を自動化しました。

もし、入力が手間となる場合は、上記の手順を一部省略可能です。

■ プロジェクトを生成

$ rails new rails_vue_bookshelf --webpack=vue  --skip-test

■ バージョン管理(Git)の設定

1. $ git init
2. $ git add -A
3. $ git commit -m "First Commit"

■ [rails generate]時の生成ファイルの設定

config/application.rb
config.generators do |g|
  g.assets false
  g.helper false
end

■ foremanによるサーバの設定

Vue.js(Webpack)を開発する際は,[rails server]とは別に[bin/webpack-dev-server]を立ち上げ,開発の都度2つのコマンドを実行することから,一つのコマンドで同時起動の設定をするため,Gem[foreman]を使用する。

○1:Gemfileに追加

Gemfile
group :development do
  ...
  gem 'foreman'
end
$ bundle install

○2:次のファイルを作成

Procfile.dev
web: bundle exec rails s
webpacker: ./bin/webpack-dev-server
bin/server
#!/bin/bash -i
bundle install
bundle exec foreman start -f Procfile.dev
  • foremanを起動するには,3行目を実行するだけで十分であるが,ここでは,外部コマンド(シェルスクリプトによるプログラム)を設定し,楽にサーバを立ち上げられるように設定した。

○3:パーミッションを変更

$ chmod 777 bin/server

○4:設定完了

$ bin/server
  • http://localhost:5000 で[Rails default information page](いつもの画面)が表示されたら成功
  • [bin/server]:Procfile.devのコマンドを実行
  • [Procfile.dev]:[rails s]と[bin/webpack-dev-server]を実行

■ CSSフレームワークを導入(Materialize)

Bootstrapでも良いが,本稿ではMaterializeを使用する。

Gemfile
gem 'materialize-sass'
gem 'material_icons'
$ bundle install
app/assets/stylesheets/application.scss
...
 *= require material_icons
 *= require_tree .
 *= require_self
 */
 @import 'materialize';
app/assets/javascripts/application.js
...
//= require materialize

■ 動作確認

○1:Controller及びViewを生成

$ rails g controller Home index

○2:View[index.html.erb]を修正

app/views/home/index.html.erb
<div id="app"></div>
<%= javascript_pack_tag 'hello_vue' %>

○3:ルーティングの設定

config/routes.rb
Rails.application.routes.draw do
  root to: 'home#index'
end

○4:動作確認

$ bin/server

■ ファイル構成修正(次回の準備)

○1:[hello_vue.js]を削除
○2:[application.js]を修正

app/javascript/packs/application.js
import Vue from 'vue'
import App from './App.vue'

const app = new Vue({
   el: '#app',
   render: h => h(App)
})
  • [application.js]:このファイルをRailsと繋げるエントリーポイントとして設定する。
  • [el:]:Railsのエントリーポイントとなる要素を指定
  • [render:h =>h(App)]:importしたApp.vueを指定要素にレンダリング
  • 参考URL

○3:[app.vue]の名称及びディレクトリを修正

app/javascript/packs/App.vue
<template>
  <div id="app">
    <p>{{ message }}</p>
  </div>
</template>

<script>
  export default {
    data: function () {
      return {
        message: "Hello Vue!"
      }
    }
  }
</script>

<style scoped>
  p {
    font-size: 2em;
    text-align: center;
  }
</style>

■ Chromeに[Vue.js devtools]プラグインを導入

[Vue.js Devtools]は,Vue.jsの開発をサポートするChromeブラウザの拡張機能であり,dataの中身等の確認が容易になるため,導入することを推奨する。
使用方法は,Chromeデベロッパー・ツールから[Vue]タブを開く。

〜Part1:環境構築編終了〜
〜Part2:Read編へ進む〜

■ [追記] 筆者の環境構築覚書

□ Rubocop 設定

  • 言わずと知れた Ruby のコーディング規約を強制させる静的解析ツール
  • プロジェクトに参加するプログラマが,各々好きなコードの書き方をするとコードの可読性が損なわれるため,最低限のコードの書き方を強制させるために使用される。
  • 規約は自由に設定できるが,デフォルトから設定するのは面倒であるため,ruby/rubocop-airbnb や,onk/onkcopなど,設定済みのライブラリを使用する。
  • ここは,筆者の好みで Airbnb で設定する。

  • 参考URL

○1: Gemfileに追加

Gemfile
...
group :development, :test do
  gem 'rubocop-airbnb'
end
...
$ bundle install

○2: 関連ファイル追加

.rubocop.yml
inherit_from:
  - .rubocop_airbnb.yml
AllCops:
  TargetRubyVersion: 2.5
  TargetRailsVersion: 5.2

  # ここで解析しないディレクトリやファイルを設定可能
  Exclude:
    - 'bin/**/*'
    - 'config/**/*'
    - 'db/**/*'
    - 'lib/**/*'
    - 'node_modules/**/*'
    - 'vendor/**/*'
.rubocop-airbnb.yml
require:
  - rubocop-airbnb

○3: 解析実行

bash
# 基本コマンド
$ rubocop

# rubocop による解析結果を自動修正するオプション(修正されない箇所もあるため注意)
$ rubocop --auto-correct 
$ rubocop -a
70
118
2

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
70
118