LoginSignup
0
1

More than 3 years have passed since last update.

前提

Rails6について学んだことを書いていきます。

macOS
Docker・Docker Composeインストール済み

本題

仮想環境を使う理由

Railsアプリケーションの開発をしようとするときに問題がある。
それは開発用マシン(作業マシン)と実運用を行うマシン(プロダクションマシン)の環境が異なること。
ここで言う環境とは、OSの種類やバージョン、あるいはOS上で動くソフトウェアやライブラリの種類やバージョンをさす。
Ruby on RailsはWindowsでもMacOSでもLinuxでも動作するように設計されている。
しかし、Railsを拡張するために導入するGemパッケージは必ずしもそうではない。
仮に動いたとしても、特定の環境では振る舞いが微妙に異なったり、不具合が出たりすることがある。

この問題の解決方法として、作業マシンとプロダクションマシンの環境を一致させること。
そこで現れるのが仮想環境と言うオプション。
Windows、MacOS、ubuntuなどのデスクトップOSの上に仮想環境を構築し、そこにLinuxベースのServerOSをインストールする。

開発中のRailsアプリケーションは仮想環境で動作させる。
デスクトップOS上のWebブラウザからRailsアプリケーションにアクセスして動作を確認。
他方、Railsアプリケーションのソースコードは共有フォルダの機能によって、デスクトップOS上で開いて編集する。
こうすれば、使い慣れたテキストエディタやIDEを使い続けながら、プロダクションマシンと同等の環境下でRailsアプリケーションの開発が行える。

Dockerとは

仮想環境を提供するオープンソース・ソフトウェア。
設定の容易さや起動の早さが人気。
個々の仮想環境をコンテナと呼ぶ。
コンテナの内容はDockerfileと呼ばれるテキストファイルで記述される。
このファイルがあれば様々なOS上でコンテナを復元できる。

Docker-composeとは

Dockerを用いて、Railsアプリケーションを開発したり、プロダクション環境で動かすとき、Railsアプリケーションとデータベースサーバーを別々のコンテナとして構築するのが一般的。
Docker-composeはこれらの複数のコンテナをまとめて起動・停止するためのツール。
docker-compose upというコマンドを実行するだけで、Webアプリケーションを構成する全てのコンテナ群が動き出す。

Rails開発環境の構築

DockerとDocker Composeを用いてRails開発用コンテナ群を構築。

terminal.
$ git clone https://github.com/oiax/rails6-compose.git
$ cd rails6-compose
$ ./setup.sh

コンテナ群の起動と停止

コンテナ群を全て起動するにはターミナルで下記のコマンドを実行。
オプション-dはコンテナをデーモン(バックグラウンドプロセス)として動かすためのもの。

terminal.
$ docker-compose up -d

コンテナ群を停止するにはターミナルで下記のコマンドを実行。

terminal.
$ docker-compose stop

webコンテナにログイン

terminal.
$ docker-compose exec web bash

Railsのバージョン確認

bash-4.4$ rails --version

Rails6.0.0と結果出力されればOK!

rails newコマンドで新規Railsアプリケーションの作成。

bash-4.4$ rails new アプリ名 -d postgresql --skip-test-unit

--skip-test-unitはTest::Unit関連のコードの生成を省略するためのオプション。

中身の確認

bash-4.4$ ls -a アプリ名/

Gemfileの編集

gem "bcrypt"         #パスワードの暗号化
gem "rails-i18n"     #railsが出力するエラーメッセージ、日付、時刻、通貨単位などの翻訳ファイルを集めたもの
gem "kaminari"       #ページネーション機能
gem "date_validator" #日付のバリデーションを行う
gem "valid_email2"   #メールアドレスへのバリデーションを行う
gem "nokogiri"       #XML/HTMLの解析・生成のため

※email_validatorはバージョンアップでバリデーションの基準が緩くなり、実用性が乏しくなった。
例えば、@を2個含むようなメールアドレスを有効と判定してしまう。

0
1
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
0
1