ぞえの技術めも

Ruby on Rails勉強中

【67日目】【1日20分のRailsチュートリアル】【第7章】本番環境用Webサーバーの設定

Ruby on Railsチュートリアル(第3版)

今日は「7.5.2 本番環境用Webサーバー」から。

7.5.2 本番環境用Webサーバー

WEBrickは本番環境として適切なWebサーバではありません。よって、今回はWEBrickをPumaというWebサーバに置き換えてみます。

はい。

まずはpuma gemをGemfileに追加します (リスト7.28)。このとき、ローカル環境 (開発用の環境) でPumaを使う必要はないので、リスト7.28のように:productionグループの中に追加しておきます。

:productionグループの中にpumaを追加。

Gemfile

group :production do
  :
  gem 'puma',           '2.11.1'
end

BundlerにGemfile.lockを更新してもらう必要があるので、いつものように次のコマンドを実行しておきます。

$ bundle install

次のステップは、config/puma.rbというファイルを作成し、そこにリスト7.29のような設定情報を追加します。

config/puma.rbというファイルを作成して

$ touch config/puma.rb

Herokuのドキュメントに載ってる下記内容をコピペ。

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/
  # deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

最後に、Procfileと呼ばれる、Heroku上でPumaのプロセスを走らせる設定ファイルを作成します (リスト7.30)。

Gemfileと同じディレクトリにProcfileを作成。

$ touch Procfile

同じようにHerokuのドキュメントの内容をコピペ。

web: bundle exec puma -C config/puma.rb

これで、本番環境用のWebサーバの設定は完了しました。これらの変更をコミットし、デプロイしてみましょう。

コミット&デプロイしました。

$ bundle exec rake test
21 tests, 43 assertions, 0 failures, 0 errors, 0 skips
$ git add -A
$ git commit -m "Use SSL and the Puma webserver in production"
$ git push
$ git push heroku
$ heroku run rake db:migrate

このとき、URLがhttps://に変わっていて、アドレスバーに鍵アイコンが表示されていることにも注目してください。

$ git push herokuで表示されるURLがhttps://になってます。

f:id:kt_zoe:20161108123538p:plain

ブラウザのアドレスバーにも鍵アイコンが表示されてます。SSL化できてる!

f:id:kt_zoe:20161108123550p:plain

アカウント登録もできました。が、id=2のユーザー登録になってる…??
railsコンソールでも見てみたけどid=1のユーザーは存在しないそうで。じゃあ何故id=2から始まるんだ。。。

$ heroku run console --sandbox
> User.find(1)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=1

詳細分からないけどユーザー登録はできたのでそっとしておきます。。。
そのうち分かるかも。

今日の作業時間は【32分】

次は「7.5.3 Rubyのバージョン番号」から。