導入環境
執筆時点のバージョンはRails 5.1.1です。
導入した環境と主なライブラリーのバージョンは次の通りです。
- OSX 10.12.5(macOS Sierra)
- Ruby 2.4.1p111
- Rails 5.1.1
- webpacker 2.0
- Node.js 7.9.0
- Yarn 0.21.3
また、Webpackerのサイトを確認すると https://github.com/rails/webpacker
- Node.js 6.4.0+
- Yarn 0.20.1+
との記述がありますので、これらJavaScript関連のライブラリも導入しておく必要があります。
その他、導入しているアプリケーション
データベース:PostgreSQL9.4
Ruby バージョン管理:rbenv
プロジェクトの作成
早速Railsプロジェクトを作成します。
プロジェクト名、およびそのルートディレクトリは適宜読み替えをお願いします。
ディレクトリ作成とRubyのバージョン指定
$ mkdir ~/work/red_caddie5 && cd "$_"
$ rbenv local 2.4.1
$ ruby -v
Gemfileの作成
$ vi Gemfile
Gemfile
source 'https://rubygems.org'
gem 'rails', '~> 5.1.1'
Railsのインストール
$ bundle install --path=vendor/bundle
Railsプロジェクトの作成
弊社ではフロントにはReactを使用することが多いので、Webpackerのreactオプションを指定します。
また、データベースもpostgresqlを指定します。
$ bundle exec rails new . --webpack=react -d=postgresql
インストールが開始され、Gemfileが競合しているとメッセージが表示されますが、yを入力して更新します。
インストール途中で、JavaScriptのライブラリの導入も行われます。
以下、コンソールの一部抜粋です。
Installing all JavaScript dependencies
run yarn add webpack webpack-merge js-yaml path-complete-extname
webpack-manifest-plugin babel-loader@7.x coffee-loader coffee-script
babel-core babel-preset-env babel-polyfill compression-webpack-plugin
rails-erb-loader glob extract-text-webpack-plugin node-sass
file-loader sass-loader css-loader style-loader postcss-loader
autoprefixer postcss-smart-import precss resolve-url-loader
babel-plugin-syntax-dynamic-import
babel-plugin-transform-class-properties from "."
依存関係のあるライブラリも含めるとものすごい量です。
んーーー
JavaScriptのライブラリどんだけ入るの・・・
Webpack dev server
従来、Railsは rails server コマンドで開発用Webサーバーを起動しましたが、5.1のWebpackerにビルドしてもらうJavaScriptのソースコードは
app/javascript/packsディレクトリに配置します。(Webpackerのサイトでは pack files と呼んでいる)
Webpack Dev Serverを起動することで、上記ディレクトリのpack filesをリロードしてくれるようです。(development環境で)
Foremanの導入
ここで、Railsの開発サーバーと、Webpack Dev Serverの2つをそれぞれ起動しなければならなくなりますが、Foremanを導入することで1つのコマンドで済むようになります。
小さいことかもしれませんが、生産性を少しでも高くするために、また開発者のストレス軽減には重要かもしれません。
Gemfileにgemを追加します。
group :development do
...
gem 'foreman' # 追加
end
開発時に利用しますので、developmentのグループに追加しています。
次のコマンドでforemanをインストールします。
$ bundle
無事foremanのインストールが完了したら、Procfileを作成します。
作成する場所はRailsのルートディレクトリです。
web: bundle exec rails s
webpacker: ./bin/webpack-dev-server
では、foremanを起動してみます。
$ bundle exec foreman start
起動後次のように起動成功のメッセージが表示されれば環境構築は成功している思います。
....
11:52:51 webpacker.1 | webpack: Compiled successfully.
いつものようにlocalhost:3000を指定してもサーバーにつながらなかったので少し焦りました。
コンソールのログを探したところ見つけました。
11:52:51 web.1 | => Rails 5.1.1 application starting in development on http://localhost:5000
Rails5.1のベータ版では、Railsのサーバーのport番号はデフォルトで3000番だったと思うのですが、5.1.1から5000番になったのでしょうか?
どうやら、Foremanで起動した場合は5000番ポートがデフォルトになるようです。
以下のURLにアクセスすると、いつものトップページが表示されると思います。
http://localhost:5000
今回はここまでにしておきます。
次回はReactのあたりを見てみたいと思います。