Railsプロジェクトの構築順序
Docker
Dockerのインストール
Dockerコンテナ群の構築(Rails開発用)
以下のコマンド群を順に実行する
$ git clone https://github.com_oiax/rails6-compose.git
$ cd rails6-compose
$ ./setup.sh
$ docker-compose up -d # コンテナ群をすべて起動
$ docker-compose stop # コンテナ群をすべて停止
$ docker-compose exec web bash # Webコンテナにログイン
$ exit # Webコンテナからログアウト
Railsプロジェクトの作成
$ rails new your-app -d postgresql --skip-test-unit # RSpecを使用するためTest::Unit関連コードを省略
Gemfileの編集
developグループ、testグループ、productionグループに必要なgemパッケージを追記します。
$ vim Gemfile
追記が終わったらgemパッケージのインストールを行います。
$ cd your-app
$ bin/bundle # gemパッケージのインストール
$ bin/bundle list # gemパッケージのリスト表示
JavaScriptパッケージ群のインストール
Javascriptパッケージ群をインストールします。
$ yarn
yarnコマンドは、実行時にyarn.lockファイルの有無を調べ、なければpackege.jsonファイルの中身を見て必要なJavaScriptパッケージ群をインストールし、インストールしたパッケージのリストとそれらのバージョン番号をyarn.lockに書き込みます。
yarn.lockが存在する状態で、yarnコマンドを実行すると、yarn.lockファイルの内容を読んで、JavaScriptパッケージ群をインストールします。
$ yarn install --check-files # 既にインストールされたファイルが削除されていないことを確認するオプション
$ yarn upgrade # インストール済みのJavaScriptパッケージ群をアップロードしたい場合に使う
データベースのセットアップ
データベースに接続するための設定を行った後に、空のデータベースを作成します。
database.ymlの編集
config/database.ymlを開き、本番環境の設定を追記します。
23 host: db
24 username: postgres
25 password: ""
データベースの作成
Webコンテナにログインし、次のコマンドを実行しデータベースを作成する。
$ docker-compose exec web bash # Webコンテナにログイン
$ cd your-app
$ bin/rails db:create
Created database 'your-app_development'
Created database 'your-app_test'
ドキュメントの整備
README.md
README.mdにアプリケーションの基本的な情報を記述します。
記述すべき情報は以下のとおりです。
- アプリケーションの簡単な説明
- 推奨されるシステム環境
- インストールの手順
- データベースの初期化の手順
- テストの実行手順
# YourApp - あなたのアプリケーションシステム
## 説明
YourApp は企業向けの○○システムです。
## 推奨されるシステム環境
* Ubuntu 19.04
* Ruby 3.0.4
* PostgreSQL 12.1
...etc
ライセンス文書の作成
ライセンス文書をアプリケーションのルートディレクトリ直下に作成する。
今回は、MITライセンスを採用する想定でMIT-LICENSE.txtを作成する。
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
タイムゾーンとロケールの設定
config/application.rbはアプリケーションの設定を記述するファイルです。
最初にタイムゾーン【Tokyo】とロケールの設定【日本語(ja)】を追記します。
# 中略
config.time_zone = "Tokyo"
config.i18n.load_path +=
Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}").to_s]
config.i18n.default_locale = :ja
end
end
Railsアプリケーションの各種設定
どのような設定項目があるかは、以下のURLを参照する
ホスト名の設定
hostsファイルの設定
hostsファイルはIPアドレスとホスト名の名前解決に使用します。
ここでは、localhostに相当する127.0.0.1というIPアドレスに2つのホスト名を設定します。
127.0.0.1 example.com your-app.example.com
web-consoleの設定
web-consoleはRoRのアプリケーション用のデバッグツールです。(Gemfileに初めから入っている)
初期状態では127.0.0.1からのアクセスしか受け付けないようになっており、
Docker環境でRailsアプリケーションを起動して、ホストOS側のブラウザでアクセスするとweb-confoleは応答しません。
この問題を回避するために、以下のファイルを書き換えます。
#(中略)
config.web_console.whitelisted_ips = [ "172.16.0.0/12" ]
end
172.16.0.0/12 は、172.16.0.0 から 172.31.255.255 までのアドレス範囲を示します。
アプリケーションの動作確認
動作確認として、webコンテナにログインしてRailsアプリケーションを起動します。
$ docker-compose exec web bash # Docker webコンテナにログイン
$ cd your-app # アプリの最上位ディレクトリに移動
$ bin/rails s -b 0.0.0.0 # -bオプションに0.0.0.0を指定するとすべてのIPアドレスからのアクセスに応答する