railsでproduction起動の備忘録

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 &

 
Ruby on Rails

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です