デプロイの下準備として、まずはこの時点までの変更をmasterブランチにマージ
$ git add -A
$ git commit -m "Finish user signup"
$ git checkout master
$ git merge sign-up
SSLを有効化
本番環境ではSSLを使うように修正する
Rails.application.configure do
.
.
.
# Force all access to the app over SSL, use Strict-Transport-Security,
# and use secure cookies.
config.force_ssl = true
.
.
.
end
config.force_sslをtrueに設定するだけ
次に、遠隔にあるサーバーのSSLをセットアップします。本番用のWebサイトでSSLを使えるようにするためには、ドメイン毎にSSL証明書を購入し、セットアップする必要がある
それは、Heroku上でサンプルアプリケーションを動かし、HerokuのSSL証明書に便乗する方法
ただし、この方法はHerokuのサブドメインでのみ有効です。独自ドメインを使う場合はSSL証明書を購入する必要がある
###7.5.2 本番環境用のWebサーバー
番環境のWebサーバー設定ファイル
# Pumaの設定ファイル
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count
port ENV.fetch("PORT") { 3000 }
environment ENV.fetch("RAILS_ENV") { ENV['RACK_ENV'] || "production" }
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
preload_app!
plugin :tmp_restart
umaが使うようにProcfileで定義する
web: bundle exec puma -C config/puma.rb
##7.5.3 本番データベースを設定する
更新が必要なのは、データベース設定ファイルconfig/database.ymlのproductionセクションだけ
データベースを本番向けに設定する
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
production:
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# https://railsguides.jp/configuring.html#データベース接続をプールする
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
database: sample_app_production
username: sample_app
password: <%= ENV['SAMPLE_APP_DATABASE_PASSWORD'] %>
###7.5.4 本番環境へのデプロイ
$ rails test
$ git add -A
$ git commit -m "Use SSL and the Puma webserver in production"
$ git push && git push heroku
##最後に
・今後
認証(authentication)システムを導入し、ユーザーがログインとログアウトをできるようにします
ユーザーも自分のアカウント情報を更新できるようにし、Webサイトの管理者がユーザーを削除できるようにします
##まとめ
・debugメソッドを使うことで、役立つデバッグ情報を表示できる
・Sassのmixin機能を使うと、CSSのルールをまとめたり他の場所で再利用できるようになる
・Railsには標準で3つ環境が備わっており、それぞれ開発環境(development)、テスト環境(test)、本番環境(production)と呼ぶ
・標準的なRESTfulなURLを通して、ユーザー情報をリソースとして扱えるようになった
・Gravatarを使うと、ユーザーのプロフィール画像を簡単に表示できるようになる
・form_withヘルパーは、Active Recordのオブジェクトに対応したフォームを生成する
・ユーザー登録に失敗した場合はnewビューを再描画するようにした。その際、Active Recordが自動的に検知したエラーメッセージを表示できるようにした
・flash変数を使うと、一時的なメッセージを表示できるようになる
・ユーザー登録に成功すると、データベース上にユーザーが追加、プロフィールページにリダイレクト、ウェルカムメッセージの表示といった順で処理が進む
・統合テストを使うことで送信フォームの振る舞いを検証したり、バグの発生を検知したりできる
セキュアな通信と高いパフォーマンスを確保するために、本番環境ではSSLとPumaを導入した