railsでproductionモードで起動した際の備忘録です。
目次
前提
- developmentモードでは動作確認済み
- ruby: 2.5.1
- Rails: 5.2.0
DBのproductionモード用の設定
config/database.ymlを編集します。
production: の箇所を適切な記述にします。
production: <<: *default database: XXXSystem_production username: userName password: <%= ENV['CAPTIONSYSTEM_DATABASE_PASSWORD'] %>
Gemfileのproductionモード用の設定
Gemfileを編集します。
group :production do の箇所を適切な記述にします。
デバッグ用に使用しているgemなどは含めないようにするのがポイントです。
group :production do gem 'binding_of_caller' gem 'pry-byebug' gem 'pry-rails' gem 'annotate' gem 'devise' ・・・ end
productionモード用DBのセットアップ
production用のDBを作成します。
$ bin/rails db:setup RAILS_ENV=production
production環境のDB確認
console
コマンドで確認を行います。
以下では、production環境のDBでユーザテーブルにレコードが存在しないことを確認しています。
$ bin/rails c production DEPRECATION WARNING: Passing the environment's name as a regular argument is deprecated and will be removed in the next Rails version. Please, use the -e option instead. (called from <main> at bin/rails:4) Loading production environment (Rails 5.2.0) [1] pry(main)> User.count (48.6ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 (1.6ms) SELECT COUNT(*) FROM `users` => 0 [2] pry(main)>
ActionMailerのproduction環境用設定
ActionMailerのgemを使用している場合、以下の設定を行います。
- config/environments/production.rbを追加。
⇒ 同フォルダdevelopment.rbと同じ設定にする。
アセットのプリコンパイル
アセットのプリコンパイルを実行します。
$ bin/rails assets:precompile RAILS_ENV=production
productionモードでサーバー起動
productionモードでサーバーを起動します。
$ bin/rails s -e production
ブラウザにアクセス(http://ipアドレス:3000)して正しく表示されればproductionモードでの起動OKです。
各種問題とその対応
cssが効いていない
config/environments/production.rbを編集する。
以下のようにすることで解決した。
config.assets.compile = false
↓
config.assets.compile = true
publicフォルダの下のjpgが読み込めない
config/environments/production.rbを編集する。
以下のようにすることで解決した。
config.public_file_server.enabled = ENV[‘RAILS_SERVE_STATIC_FILES’].present?
↓
config.public_file_server.enabled = true
sidekiqでメールが送られない
sidekiqを一旦停止して、productionモードで起動したらメールが送られるようになった。
以下はproductionモードでの起動コマンド。
bundle exec sidekiq -C config/sidekiq.yml -e production &