Railsのproduction.rbはどういう事が設定できるの?全ての設定を調べてみた!

なぜ記事を書こうと思ったか

Railsのproduction.rbでどのような設定をしているか及びどのような設定ができるかを確認する為に調べたので備忘録として残します。

default.confのコマンド説明

  • config.cache_classes = true

ソースコードをリロードしない。キャッシュが適用される。

  • config.eager_load

Railsのapp以下にあるクラス(ModelやController)を起動時に全て読み込むかどうか設定

  • config.consider_all_requests_local

すべてのエラーをブラウザに表示をするかの設定

例:Routing Errorなど詳細なエラー情報が表示される。

  • config.action_controller.perform_caching

アプリケーションのキャッシュの有無

  • config.require_master_key = true

ENV["RAILS_MASTER_KEY"]環境変数またはconfig/master.keyファイルでマスターキーを取得できない場合はアプリを起動しないようにする。

  • config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

public/ディレクトリ内の静的アセットを配信するかどうかを指定するかの設定。

production環境ではアプリケーションを実行するNginxやApacheなどのサーバーが静的アセットを扱う必要があるので、falseに設定されます。

  • config.asset_host

アセットを置くホストを設定

アセットとは、Webアプリケーションの直接のレスポンス以外の構成要素のことを指します。JavascriptCSS、画像などがこれにあたります。

  • config.action_dispatch.x_sendfile_header = 'X-Sendfile'

バックエンドで認証やログ記録などを処理し、Apacheにリダイレクトされた場所からエンドユーザーへのコンテンツの提供を処理させることができるため、バックエンドを解放して他のリクエストを処理できる。

  • config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

バックエンドで認証やログ記録などを処理し、NGINXにリダイレクトされた場所からエンドユーザーへのコンテンツの提供を処理させることができるため、バックエンドを解放して他のリクエストを処理できる。

  • config.active_storage.service = :local

config/storage.ymlで名前を宣言し、このオプションでファイルを保存する場所を指定

  • config.action_cable.mount_path = nil

Action Cableをメインサーバープロセスの一部としてマウントする場所を文字列で指定します。デフォルト値は/cableです。nilを設定すると、Action Cableは通常のRailsサーバーの一部としてマウントされなくなります。

ActionCableとは、Railsのアプリケーションと同様の記述で、WebSocket通信という双方向の通信によるリアルタイム更新機能を実装できるフレームワークで、Rails5から実装されました。利用することで、たとえばリアルタイムで更新されるチャット機能を実装することができます。

Cableサーバを決めたら、ServerのURLをclientサイドに提供する必要がある。Action CableサーバーがホストされているURLを文字列で指定します。Action Cableサーバーがメインのアプリケーションと別になっている場合に使う可能性があります。View側に action_cable_meta_tag を書く。

指定されていない送信元からのリクエストを受け付けません。送信元リストは、配列の形でサーバー設定に渡します。送信元リストには文字列のインスタンス正規表現を利用でき、これに対して一致するかどうかがチェックされます。

  • config.force_ssl = true

すべてのリクエストをHTTPSプロトコル下で実行するよう強制し、URL生成でも"https://"をデフォルトのプロトコルに設定します。

  • config.log_level = :info

Railsのログ出力をどのぐらい詳細にするかを指定します。

ログレベル(順に必要度が低くなる):①unknown ⇨ ②fetal → ③error → ④warn → ⑤info → ⑥debug)

④を指定した場合、④⑤⑥のログが出力される。

  • config.log_tags = [ :request_id ]

ログにタグ付けをする。

今回の場合、ログの前に一意の値が出力される。

  • config.cache_store = :mem_cache_store

Railsでのキャッシュ処理に使われるキャッシュストアを設定します。

キャッシュの種類

①:memory_store → プロセス内のメモリ

②:file_store → ファイルシステム

③:mem_cache_store → Dangaのmemcachedサーバーに一元化

④:null_store → キャッシュをしない

  • config.active_job.queue_adapter = :resque

キューのバックエンドに用いるアダプタを設定

Resqueは、バックグラウンドジョブを作成し、それらのジョブを複数のキューに配置し、後で処理するためのRedisがサポートするライブラリ

  • config.active_job.queue_name_prefix = "app_production"

キューの前にプレフィックスを付ける。

プレフィックスとは、単語の先頭に付加して特定の意味を付け加える要素(接辞)のこと。

  • config.action_mailer.perform_caching = false

メイラーのテンプレートでフラグメントキャッシュを有効にするかどうかを指定します。指定のない場合のデフォルト値はtrueです。

フラグメントキャッシュとは、ページの一部分をキャッシュする機能。キャッシュされたデータはキャッシュストアに保存され、2回目以降はキャッシュストアからデータを取り出される。

  • config.action_mailer.raise_delivery_errors = true

メール配信が完了しなかった場合にエラーを発生させるかどうかを指定

  • config.action_mailer.default_url_options

Action MailerのビューでURLを生成する

  • ActionMailer::Base.smtp_settings

ActionMailer経由の全てのメールがこのSMTP設定を用いて配信される

  • ActionMailer::Base.delivery_method

配信方法の設定

  • config.i18n.fallbacks = true

訳文がない場合のフォールバック動作を設定

フォールバック動作とは、システムに障害が発生したときに性能を落としたり機能を制限したりして限定的ながら稼動を続行すること。あるいは、利用したい機能が条件が悪く使えない場合に、代替となる機能に切り替えること。また、そのような機能や構成。

  • config.active_support.deprecation = :notify

非推奨警告メッセージの振る舞いを設定。どこにメッセージを出力するかを指定。

  • config.active_support.disallowed_deprecation = :log

利用が許されない非推奨警告メッセージの振る舞いを設定します。すべてのログ行の前に次のタグを付けます。

  • config.active_support.disallowed_deprecation_warnings = []

どの非推奨メッセージを禁止するかをアクティブサポートに伝えます。

  • config.log_formatter = ::Logger::Formatter.new

Railsロガーのフォーマットを定義

  • config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')

Rails.loggerで使われるロガーやRails関連のあらゆるロガー(ActiveRecord::Base.loggerなど)を指定します。デフォルトでは、ActiveSupport::LoggerのインスタンスをラップするActiveSupport::TaggedLoggingのインスタンスが指定されます。

標準出力用の Logger オブジェクトを作成する。

  • config.active_record.dump_schema_after_migration = false

マイグレーション実行時にスキーマダンプ(db/schema.rbまたはdb/structure.sql)を行なうかどうかを指定

スキーマダンプとは、スキーマを抽出する。db/schema.rb の作成

最後に

間違っている箇所やわからない箇所があれば、ぜひコメントしていただけると嬉しいです。

読んで頂きありがとうございました。

参考資料