紙一重の積み重ねスマートフォン用の表示で見る紙一重の積み重ねアラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。7.5プロのデプロイの演習まとめ&解答例です。個人の解答例なので、誤りがあればご指摘ください。trueとなっているコメントアウトを外せばOK。trueSSL証明書チュートリアルでは、Herokuの証明書に便乗する。Herokuのサブドメインでのみ有効。本章での学びpumaとは?チュートリアルの説明では、Pumaは多数のリクエストを捌くことに適したWebサーバです。Railsアプリケーションが動くアプリケーションサーバのようです。Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳)がわかりやすかったです。Javaで言うところのTomcatがPumaという理解でよさそうです。(そういえばどっちもネコ科の動物ですね)pumaの設定Herokuにpumaをインストールするために、puma.rbを修正する。workersの設定を行う。デフォルトではコメントアウトされている。}チュートリアルのとおり修正。2)スレッドの設定を行う。デフォルトの書き方はこちら。threads_countthreads_countの記載をチュートリアルに習って修正。threads_countアプリケーションのプリロードworkerプロセスの起動時間が短縮できるとのこと。デフォルトではコメントアウトされている。preload_app!コメントアウトを外す。preload_app!RackupPumaにRackアプリの起動方法を伝える設定。Heroku曰く、この記述は、新しいPumaでは必要ないかもしれないとのこと。Rackとは何なのかわかりにくい。以下、Qiitaより引用。Rackとは何かRackはRubyでWebサーバーを立ち上げるためのインターフェースである。puma.rbに以下の記述を追加する。DefaultRackupポート番号の設定pumaがバインドするポート番号の設定。デフォルトは3000番とのこと。}チュートリアルの記述方法に修正する。3000pumaの環境設定RACK_ENVで環境を設定する。‘production'に設定されるとのこと。puma.rbデフォルトの記述は以下の通り。}チュートリアルの記述方法に修正する。boot複数のプロセス間で接続を共有できないため、異なるサービスに接続する場合に便利とのこと。マルチプロセスモードを使用している時にのみ必要な設定。デフォルトではコメントアウトされている。doコメントアウトを外して、チュートリアルの記述に修正する。ActiveRecord::Base.establish_connectionendProcfileの作成Heroku上でPumaのプロセスを走らせる設定ファイル。ルートディレクトリ(Gemfileと同じディレクトリ)に配置すること。Procfileを生成する。./Procfileチュートリアルの記述方法に修正する。herokuを実行する。db:migrateを実行する。usersテーブルが生成されていることを確認。あれ・・・?アプリケーションエラー・・・?HerokuでApplicationErrorが発生したときの対処法に従って、Herokuを再起動してみる。sample_app実行結果。sample_appがないとのこと。app.そもそも開発環境は起動するのかherokuではなく、cloud9環境で確認。pumaが起動しない。DefaultRackupがNameErrorと言われているのが原因っぽい。(NameError)やっぱり、自分で調べたとおり、この記述は必要ないのではないか・・・。Heroku曰く、この記述は、新しいPumaでは必要ないかもしれないとのこと。コメントアウトして再起動を試みる。0再度本番環境へデプロイファイルを修正してコミット。gitヘプッシュする。push再度、herokuへデプロイ。heroku本番環境のURLにアクセスする。無事に画面が表示されることを確認。やったー!また、URLがhttpsになっていることを確認。chromeのF12開発ツールで、証明書が*.herokuapp.comになっていることを確認。herokuへのデプロイ時のWARNINGについて以下のエラーが気になっていたが、チュートリアルでは現時点では無視して良いとのこと。商用でHerokuを使ったアプリケーションを動かす場合は、GemfileでRubyのバージョンを明示しておいた方が賢明。アクセスし、SSLの鍵マークがかかっているか、URLがhttpsになっているかどうかを確認してみましょう。演習2本番環境でユーザーを作成してみましょう。Gravatarの画像は正しく表示されているでしょうか?本番環境のデータベースを一度リセットする。db:migrate:reset登録前のユーザ数を確認。0本番環境で自分のGravatar画像が表示されることを確認。登録後のユーザ数を確認。consoleで、developmentの環境を読み込んでいるためか。productionまたは、--environment=productionをつける。5.0.0.1)本番環境のユーザ数を確認。本番環境のデータベースファイル/sample_app/db/production.sqlite3をダウンロード。cloud9で中身を開くと、なんと中身が空だった。RAILS_ENV=productionで、本番環境のデータベースを作成する。db:migrateを行う。本番環境のユーザ数を確認する。本番環境のユーザが0であることを確認。0再度、本番環境の画面からユーザ登録を行う。メールアドレスがすでに登録されているとエラーが出る。本番環境なのに、developmentのデータベースを参照しているような動きをしている。pg:psqlで接続できる。help.SQLを実行してみる。確かに、すでにユーザがいる。row)終了するときは、バックスラッシュ(または\マーク)+qを使う。db:migrate:resetを実行する。実行すると、ActiveRecord::ProtectedEnvironmentErrorが発生。エラーログより、回避するためには、DISABLE_DATABASE_ENVIRONMENT_CHECK=1が必要とのこと。DISABLE_DATABASE_ENVIRONMENT_CHECK=1を実行。今度は権限がないとのこと。--trace)heroku上のデータベースをリセットする調べた結果、heroku上のデータベースをリセットするには、やり方が異なるようだ。DATABASE_URLを実行する。db:migrateで再構築する。pg:psqlでherokuのデータベースに接続。SQLでユーザ数を調べる。ユーザ数が0にリセットされていることを確認。consoleのユーザ数も0であることを確認。本番環境から再度、ユーザ登録を実施。再度、herokuのpostgresqlに接続。ユーザ数が1に上がっていることを確認。row)おわりにherokuと開発環境の差に、かなりはまってしまいましたが、なんとかリカバリできました。いう試行錯誤が、チュートリアルの以下のコラムの意図するところなのかもしれません。引き続き次の章もがんばります。はてなブログProSIerで働く36歳のエンジニアです。自社WEBサービスの開発・AWSのインフラ構築を行っています。なれる最高のフルスタックエンジニアを目指して、RailsやAWSをこつこつ学習中。本を10冊出すことが夢です。PL/SQL」(シーアンドアール研究所)の著者。#devsumiDスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。