Railsの設定
このガイドでは、Railsアプリケーションの設定と利用可能な機能の初期化について説明します。 このガイドを読むことで、次の事が学べるはずです。
- Railsアプリケーションの動作を適合させる方法
- アプリケーション開始時に追加コードを実行する方法
- 1. 初期化コードの置き場所
- 2. Railsの前にコードを実行する
- 3. Railsコンポーネントの構築
- 4. Rails環境の設定
- 5. 初期化ファイルの使用
- 6. イベントの初期化
- 7. データベースのプーリング
1. 初期化コードの置き場所
Railsは初期化コードの配置をするにあたり、標準で4つの場所を提供します。
- config/application.rb
- 環境特有の設定ファイル
- Initializers
- Initializers後
2. Railsの前にコードを実行する
稀なケースですが、アプリケーションがRailsが読み込まれる前に幾つかのコードの実行が必要な場合、
config/application.rb内のrequire 'rails/all'呼び出しより上に、
そのコードを配置します。
3. Railsコンポーネントの構築
通常、Railsの設定動作は、Rails自身も含めたRailsのコンポーネントを設定することを意味します。
設定ファイルであるconfig/application.rbと、
環境独自の設定ファイル(config/environments/production.rbのような)は、
開発者が全てのコンポーネントに対して適用したい様々な設定を可能にしてくれます。
例えば、デフォルトのconfig/application.rbファイルは、下記の設定を含みます。
config.filter_parameters += [:password]
これは、Rails自身のための設定です。
もし、個別にRailsのコンポーネントに設定の指定を行いたい場合は、
config/application.rb内の同じconfigオブジェクトを通して、それを行うことが可能です。
config.active_record.schema_format = :ruby
Active Recordは、この特定の設定を使用するようになります。
3.1 Railsの一般的な設定
これらの設定メソッドは、Rails::EngineまたはRails::Applicationのサブクラスなどの、
Rails::Railtieオブジェクト上で呼び出されます。
-
config.after_initializeはブロックを受け取り、 Railsがアプリケーションの初期化を終えた後にそれが実行されます。 これには、フレームワーク自身、エンジン、config/initializers内の全てのアプリケーションの初期化処理が含まれます。 このブロックは、rakeタスクのために(?)実行される事に注意してください。(翻訳に自信なし) 他の初期化によって設定された値を使用する際に便利です。config.after_initialize do ActionView::Base.sanitized_allowed_tags.delete 'div' end -
config.asset_hostは、assetsのためのホストを設定します。 CDNがassetsのホスティングとして使用される際に、 または異なるドメインエイリアスを使用したブラウザの同一ドメイン制約を避けたい際に便利です。config.action_controller.asset_hostのショートバージョンです。 -
config.autoload_once_pathsは、 Railsが自動読み込みし、各リクエストでは参照しない定数のパスの配列を受け取ります。 関連してdevelopmentモードの場合にはデフォルトで、config.cache_classesはfalseになります。(翻訳に自信なし) そうでなければ、全ての自動読み込みは1度だけ発生します。 また、この配列の全ての要素は、自動読み込みするパス(autoload_paths)でなければいけません。 デフォルトでは、空の配列になります。 -
config.autoload_pathsは、Railsが自動読み込みする定数から、パスの配列を受け取ります。 デフォルトは、app配下の全てのディレクトリになります。 -
config.cache_classesは、アプリケーションクラスとモジュールの各リクエスト毎の再読み込みを制御します。 デフォルトでは、developmentモードはfalse、testとproductionのモードではtrueになります。 また、threadsafe!を使用する際にも、有効にすることが出来ます。 -
config.action_view.cache_template_loadingは、テンプレートの各リクエスト毎の再読み込みを制御します。 デフォルトでは、config.cache_classesのものが設定されます。 -
config.cache_storeは、Railsのキャッシュ格納について設定を行います。 オプションには、:memory_store、:file_store、:mem_cache_store、:null_store、またはキャッシュAPIを実装したオブジェクトのシンボルのうち1つが含まれます。 デフォルトでは、tmp/cacheが存在すれば:file_storeになり、そうでなければ:memory_storeになります。 -
config.colorize_loggingは、ログ情報の出力時にANSIカラーコードを使用するか否かを指定します。 デフォルトはtrueです。 -
config.consider_all_requests_localはフラグになります。 もし、trueであればエラーが発生した際に詳細なデバッグ情報をHTTPレスポンスに出力し、 Rails::Infoコントローラーは、/rails/info/properties内にアプリケーションランタイムのコンテキストを表示します。 デフォルトでは、developmentとtestはtrueで、productionではfalseになります。 細かく制御するには、これをfalseに設定し、コントローラーにlocal_request?を実装して、 リクエストが提供すべきエラーのデバッグ情報を指定します。 -
config.consoleは、railsコンソール実行に使用するコンソールのクラス設定を可能にしてくれます。 コンソールブロックでそれを実行するのが良いでしょう。console do # このブロックはコンソール実行時にのみ呼びだされ、 # 安全にpryを読み込むことが出来ます。 require "pry" config.console = Pry end -
config.dependency_loadingは、falseにすることで定数の自動読み込みを無効にすることが出来るフラグです。 これはconfig.cache_classesがtrueの場合にのみ作用し、デフォルトでproductionモードがtrueになっています。 このフラグは、config.threadsafe!でfalseに設定されています。 -
config.eager_loadがtrueの場合、登録された全てのconfig.eager_load_namespacesをEager loadingします。 これは、作成したアプリケーション、エンジン、Railsフレームワーク、その他の登録された名前空間が含まれます。 -
config.eager_load_namespacesはconfig.eager_loadがtrueの際に、 Eager Loadする名前空間を登録します。 登録された全ての名前空間は、eager_load!メソッドに応答しなければいけません。 -
config.eager_load_pathsは、config.cache_classesが有効の場合、 Railsから起動時にEager Loadしたパスの配列を受け取ります。 デフォルトは、アプリケーションのappディレクトリ内の各フォルダになります。 -
config.encodingはアプリケーション全体のエンコーディングの設定を行います。 デフォルトはUTF-8です。 -
config.exceptions_appは、例外発生時にShowExceptionミドルウェアによって実行される例外アプリケーションを設定します。(翻訳に自信なし) デフォルトは、ActionDispatch::PublicExceptions.new(Rails.public_path)になります。 -
config.file_watcherは、config.reload_classes_only_on_changeがtrueの際に、 ファイルシステム内のファイル更新を検知するのに使用されるクラスです。 これは、ActiveSupport::FileUpdateCheckerAPIに従わなければいけません。 -
config.filter_parametersは、パスワードやクレジットカード番号のような、 ログに表示させたくないパラメータをフィルタリングするのに使用されます。 -
config.force_sslは、ActionDispatch::SSLミドルウェアを使用することで、 全てのリクエストをHTTPSプロトコル下に強制します。 -
config.log_formatterは、Railsのログのフォーマッターを定義します。 このオプションはデフォルトでは、productionを除く全てのモードがActiveSupport::Logger::SimpleFormatterのインスタンスで、 productionはLogger::Formatterになります。(翻訳に自信なし) -
config.log_levelは、Railsが出力するログの冗長性(ログレベル)を設定します。 デフォルトで、productionを除くモードでは:debug、productionは:infoになります。 -
config.log_tagsは、requestオブジェクトに応答するメソッドのリストを受け取ります。 これにより、サブドメインとリクエストされたIDのようなデバッグ情報をログに簡単にタグ付けできるようになるため、 複数ユーザーによるproductionアプリケーションのデバッグで非常に有用です。(翻訳に自信なし) -
config.loggerは、Log4rのインターフェースに従うロガーまたはデフォルトのRubyのロガークラスを受け取ります。 デフォルトは、productionモードでauto flushingがオフのActiveSupport::Loggerのインスタンスになります。 -
config.middlewareは、アプリケーションのミドルウェアの設定を可能にしてくれます。 詳細は、この後のミドルウェアの設定のセクションを参照してください。 -
config.reload_classes_only_on_changeは、 追跡(tracked)ファイルが変更された際にのみ行うクラスのリロードの有効/無効を設定します。 デフォルトでは、自動読み込みするパスの全てを追跡し、trueに設定されています。config.cache_classesがtrueの場合、このオプションは無視されます。 -
config.secret_key_baseは、セッションが改竄されるのを防ぐために、 アプリケーションの安全なキーであることを照合するのに使用されるキーの指定に使用されます。 アプリケーションはconfig/initializers/secret_token.rb内で、 ランダムなキーで初期化されたconfig.secret_key_baseを取得します。 -
config.serve_static_assetsは、Rails自身が提供する静的なアセット(assets)の設定を行います。 デフォルトはtrueですが、サーバソフトウェア(例:NginxまたはApache)が代わりに静的なアセットを提供すべきものとして、 production環境ではfalseになっています。 Rails自身がそれを実行する際(絶対にお勧めできません!)や、WEBrickを使用してproductionモードでアプリケーションをテストする際に、 デフォルトとは異なるtrueを設定します。 そうでなければ、ページのキャッシュ、そして通常publicディレクトリ下に存在し、 Railsアプリケーションとして出力されるファイルへのリクエストの処理をすることが出来なくなります。 -
config.session_storeは、通常config/initializers/session_store.rb内で設定され、 セッションの格納に何のクラスを使用するかを指定します。 指定可能な値は、デフォルトの:cookie_storeと:mem_cache_storeと:disabledです。 最後の:disabledは、Railsにセッションを扱わない事を伝えます。 また、カスタマイズしたセッション格納を指定することも可能です。config.session_store :my_custom_storeこの場合、
ActionDispatch::Session::MyCustomStoreとして、定義されていなければいけません。 -
config.time_zoneは、アプリケーションのデフォルトのタイムゾーンを設定し、 Active Recordのためのタイムゾーン認識を有効にします。 -
config.beginning_of_weekは、デフォルトのアプリケーションの週始まりの日を設定します。 これは、有効な曜日のシンボル(例::monday)を受け取ります。 -
config.whiny_nilsは、一定のメソッドがnil上で実行され応答できない際の警告の有効/無効を設定します。 デフォルトでは、developmentとtestの環境でtrueです。
3.2 アセットの設定
-
config.assets.enabledは、アセットパイプライン(asset pipeline)の有効/無効を制御するフラグです。 これは、config/application.rb内で明確に初期化されます。 -
config.assets.compressは、コンパイルするアセットの圧縮の有効/無効を制御するフラグです。config/production.rb内(productionモード)で明示的にtrueに設定されています。 -
config.assets.css_compressorは、使用するCSSコンプレッサー(圧縮器)を定義します。 デフォルトの設定は、sass-railsが定義されています。 現在の唯一の代替値は:yuiで、これはyui-compressorgemを使用します。 -
config.assets.js_compressorは、使用するJavaScriptコンプレッサー(圧縮器)を定義します。 指定可能な値は、:closure、:uglifier、:yuiで、 それぞれclosure-compiler、uglifier、yui-compressorのgemの使用が必要になります。 -
config.assets.pathsは、アセットを探すのに使用されるパスが含まれます。 この設定オプションにパスを追加すると、アセットを探すのにそれらのパスが使用されるようになります。 -
config.assets.precompileは、rake assets:precompile実行時に、 プリコンパイルされる追加アセット(application.cssとapplication.js以外)の指定を可能にしてくれます。 -
config.assets.prefixは、アセットが提供される場所のプレフィックスを定義します。 デフォルトは/assetsになります。 -
config.assets.digestはアセット名に使用するMD5フィンガープリントを有効にします。production.rb内でデフォルトでtrueに設定されています。 -
config.assets.debugは、アセットの連結と圧縮を無効にします。development.rb内でデフォルトでtrueに設定されています。 -
config.assets.cache_storeは、Sprocketsを使用するキャッシュストアを定義します。 デフォルトは、Railsファイル格納になります。 -
config.assets.versionは、MD5ハッシュ生成に使用される任意の文字列です。 これは再コンパイルすることで、全てのファイルに対して強制的に変更することが出来ます。 -
config.assets.compileは、 production環境で「ライブSprocketsコンパイル」をオンにするのに使用する真偽値です。 -
config.assets.loggerは、Log4rの実装に従うロガー、またはデフォルトのRubyロガークラスを受け取ります。 デフォルトでは、config.loggerで設定されているものと同じになります。 config.assets.loggerをfalseに設定すると、アセットのログ提供がオフになります。
3.3 ジェネレーターの設定
Railsでは、config.generatorsで使用するジェネレーターを差し替える事が出来ます。
このメソッドはブロックを受け取ります。
config.generators do |g|
g.orm :active_record
g.test_framework :test_unit
end
下記のメソッドを、このブロック内で使用することが可能です。
-
assetsはスキャフォールド生成時にアセットの生成を許可します。デフォルトはtrueです。 -
force_pluralは複数形のモデル名を許可します。デフォルトはfalseです。 -
integration_toolは使用する統合ツールを定義します。デフォルトはnilです。 -
javascriptsは、ジェネレーター内でJavaScriptファイルのためのフックをオンにします。 Railsスキャフォールドのジェネレーター時に使用されます。デフォルトはtrueです。 -
javascript_engineは、アセット生成時に使用されるエンジン(例:coffee)を設定します。デフォルトはnilです。 -
ormは、orm使用を定義します。デフォルトはfalseで、デフォルトのActive Recordを使用します。 -
resource_controllerは、rails generate resourceコマンドを実行する際に、 コントローラー生成に使用されるジェネレーターを定義します。 デフォルトは、:controllerです。 -
scaffold_controllerは、resource_controllerと異なり、rails generate scaffoldコマンドを実行する際に、 スキャフォールドでのコントローラー生成時に使用されるジェネレーターを定義します。 デフォルトは:scaffold_controllerです。 -
stylesheetsは、ジェネレーターでのスタイルシートのフックをオンにします。 Railsでスキャフォールドの実行時に使用されますが、このフックは他のジェネレーターでも同様に使用されます。 デフォルトはtrueです。 -
stylesheet_engineは、アセット生成時にスタイルシートのエンジン(例: sass)を設定します。 デフォルトは:cssです。 -
test_frameworkは、使用するテストフレームワークを定義します。 デフォルトはfalseで、デフォルトのTest::Unitを使用します。 -
template_engineは、ERBやHamlのような使用するテンプレートエンジンを定義します。 デフォルトは、:erbです。
3.4 ミドルウェアの設定
ミドルウェアの標準セット付きのRailsアプリケーションは、開発環境ではこの順序で使用されます。
-
ActionDispatch::SSLは各リクエストをHTTPSプロトコル配下に強制します。config.force_sslがtrueに設定されると、利用可能になります。config.ssl_optionsを使用して、これにオプションを渡すことで設定を行うことが可能です。 -
ActionDispatch::Staticは、静的なアセットの提供に使用されます。 無効にするには、config.serve_static_assetsをfalseにします。 -
Rack::Lockは、Mutexのアプリケーションをラップするため、 同時に1つのスレッドからのみ呼び出されるようにすることが出来ます。config.cache_classesがfalseの場合にのみ、有効になります。 -
ActiveSupport::Cache::Strategy::LocalCacheは、基本的なメモリのバックアップキャッシュとして提供されます。 このキャッシュはスレッドセーフでは無く、シングルスレッドのための一時的なメモリキャッシュとして機能するためのものです。 -
Rack::Runtimeは、X-Runtimeヘッダーを設定し、そのリクエストの処理に掛かった時間(秒)を含めるようにします。 -
Rails::Rack::Loggerは、リクエストの開始にログに通知します。 リクエストが完了すると、全てのログをクリアします。 -
ActionDispatch::ShowExceptionsは、 リクエストがローカル、またはconfig.consider_all_requests_localがtrueに設定されていれば、 アプリケーションによる何らかの例外をrescueし、ユーザーに対して表示しても問題のない例外ページを描画します。 もし、config.action_dispatch.show_exceptionsがfalseに設定されていると、 それらとは関係無く例外が発生します。 -
ActionDispatch::RequestIdは、レスポンスで利用可能な一意のX-Request-Idヘッダーを作成し、ActionDispatch::Request#uuidメソッドを有効にします。 -
ActionDispatch::RemoteIpは、IPスプーフィング攻撃を調べるために、 リクエストヘッダーから有効なclient_ipを取得します。config.action_dispatch.ip_spoofing_checkとconfig.action_dispatch.trusted_proxiesオプションで設定します。 -
Rack::Sendfileはファイルから提供されるbodyを奪い、 サーバに指定されたX-Sendfileヘッダーを使用してそれを置換します。config.action_dispatch.x_sendfile_headerで設定します。 -
ActionDispatch::Callbacksは、リクエストが提供される前に準備を行うコールバックを実行します。 -
ActiveRecord::ConnectionAdapters::ConnectionManagementは、rack.testキーがリクエストされた環境でtrueに設定されていなければ、 各リクエスト後にアクティブな接続をクリーンアップします。 -
ActiveRecord::QueryCacheは、リクエストによる全てのSELECTクエリーをキャッシュします。 もし、何らかのINSERTまたはUPDATEがそこに発生すれば、そのキャッシュをクリーンアップします。 -
ActionDispatch::Cookiesは、そのリクエストのためのCookieを設定します。 -
ActionDispatch::Session::CookieStoreは、Cookie内のセッションの格納を請け負います。 代替のミドルウェアは、config.action_controller.session_storeを代替値に変更することで、これを使用することが出来ます。 更にconfig.action_controller.session_optionsを使用して、オプションを渡すことで設定することが可能です。 -
ActionDispatch::Flashは、flashキーを設定します。config.action_controller.session_storeに値が設定されている場合のみ、利用することが出来ます。 -
ActionDispatch::ParamsParserはリクエストに含まれるパラメータを解析し、 それをparamsに入れます。 -
Rack::MethodOverrideは、params[:_method]が設定されていた場合、 それを上書き可能にします。 これは、PATCH、PUT、DELETEのメソッドタイプをサポートするHTTPミドルウェアです。 -
ActionDispatch::Headは、HEADリクエストをGETリクエストに変換し、 GETリクエストであるとして提供します。
これらの通常のミドルウェア以外にも、config.middleware.useメソッドを使用して、
独自のものを追加することが出来ます。
config.middleware.use Magical::Unicorns
これにより、Magical::Unicornsミドルウェアがスタックの最後に配置されます。
他のミドルウェアの前に追加したければ、insert_beforeを使用します。
config.middleware.insert_before ActionDispatch::Head, Magical::Unicorns
また、他のミドルウェアの後に追加をするinsert_afterも存在します。
config.middleware.insert_after ActionDispatch::Head, Magical::Unicorns
ミドルウェアはまた、完全にスワップアウトし、他のものに置き換えることも可能です。
config.middleware.swap ActionController::Failsafe, Lifo::Failsafe
また、スタックから完全に取り除くことも可能です。
config.middleware.delete "Rack::MethodOverride"
3.5 i18nの設定
-
config.i18n.default_localeは、デフォルトでi18nのためにアプリケーションに使用されロケールを指定します。 デフォルトは、:enです。 -
config.i18n.load_pathは、Railsがロケールファイルを探すためのパスを設定します。 デフォルトは、config/locales/*.{yml,rb}です。
3.6 Active Recordの設定
config.active_recordには、様々な設定オプションが含まれています。
-
config.active_record.loggerは、何らかの新しいデータベース接続作成に渡されるLog4rのインターフェースに沿ったロガー、 またはデフォルトのRubyロガークラスを受け取ります。 開発者は、Active RecordモデルクラスまたはActive Recordインスタンスのいずれかで、このロガーを呼び出すことで取得する事が出来ます。nilを設定すると、ログ出力は無効になります。 -
config.active_record.primary_key_prefix_typeは、主キーカラムの命名の調整を可能にしてくれます。 デフォルトでは、Railsは主キーのカラムをidと命名しようとします。 (また、このオプションへの設定が必要無ければ) 他に2つの選択肢が存在します。:table_nameは、主キーをCustomerクラスであればcustomeridにし、:table_name_with_underscoreは、主キーをCustomerクラスであればcustomer_idにします。 -
config.active_record.table_name_prefixは、テーブル名の前に付けられるグローバルな文字列の設定を可能にしてくれます。 もし、これにnorthwest_を設定すると、Customerクラスは自身のテーブルとしてnorthwest_customersを探します。 デフォルトは空文字列です。 -
config.active_record.table_name_suffixは、テーブル名の後ろに付けられるグローバルな文字列の設定を可能にしてくれます。 もし、これに_northwestを設定すると、Customerクラスは自身のテーブルとしてcustomers_northwestを探します。 デフォルトは空文字列です。 -
config.active_record.pluralize_table_namesは、 Railsがデータベースの単数形または複数形のテーブル名のどちらを参照するかを指定します。 true(デフォルト)が設定されていれば、Customerクラスはcustomersテーブルを使用します。 falseが設定されていれば、Customerクラスはcustomerテーブルを使用します。 -
config.active_record.default_timezoneは、データベースから日付けと時間を取得する際に、Time.local(:localを設定)とTime.utc(:utcを設定)のどちらを使用するかを決定します。 Railsではデフォルトは:utcですが、Rails外で使用する場合、Active Recordのデフォルトは:localです。 -
config.active_record.schema_formatは、データベースのスキーマがファイルにdumpされるフォーマットを制御します。 オプションには、マイグレーションに依存したデータベースとは独立した:ruby(デフォルト)、 またはSQL文のセット(潜在的にデータベース依存)である:sqlがあります。 -
config.active_record.timestamped_migrationsはマイグレーションに、 シリアル数値またはタイムスタンプでのナンバー付けのどちらにするかを制御します。 デフォルトはtrueでタイムスタンプを使用します。 複数の開発者が同じアプリケーションを開発をする場合は、こちらの方が良いでしょう。 -
config.active_record.lock_optimisticallyは、Active Recordが楽観的ロックを使用するかを制御し、 デフォルトはtrueです。 -
config.active_record.cache_timestamp_formatは、キャッシュキー内のタイムスタンプ値のフォーマットを制御します。 デフォルトは、:numberです。
MySQLアダプタの場合、設定の追加オプションが1つあります。
-
ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleansは、 Active RecordがMySQLデータベースの全てのtinyint(1)のカラムを真偽値とみなすか否かを制御します。 デフォルトはtrueです。
スキーマのdumpは、設定オプションを1つ追加します。
-
ActiveRecord::SchemaDumper.ignore_tablesは、 スキーマファイルの生成に含めるべきではないテーブルの配列を受け取ります。 この設定は、config.active_record.schema_format == :rubyで無ければ、無視されます。
3.7 Action Controllerの設定
config.action_controllerは、幾つかの設定が含まれます。
-
config.action_controller.asset_hostはアセット用のホストを設定します。 アプリケーションサーバ自身では無くアセット用のホストとしてCDNを使用する場合に便利です。 -
config.action_controller.perform_cachingは、アプリケーションがキャッシュを行うか否かを設定します。 developmentモードではfalse、productionではtrueが設定されます。 -
config.action_controller.default_static_extensionは、キャッシュページで使用される拡張子を設定します。 デフォルトは.htmlです。 -
config.action_controller.default_charsetは、全ての描画でのデフォルトの文字コード設定を指定します。 デフォルトは、"utf-8"です。 -
config.action_controller.loggerは、Log4rのインターフェースに沿ったロガー、 またはデフォルトのRubyロガークラスを受け入れ、Actionコントローラーからのログ情報に使用します。 nilを設定すると、ログ出力が無効になります。 -
config.action_controller.request_forgery_protection_tokenは、 リクエストフォージェリのためのトークンパラメータ名を設定します。protect_from_forgeryの呼び出しは、 デフォルトで:authenticity_tokenを設定します。 -
config.action_controller.allow_forgery_protectionはCSRFに対する防御の有効・無効を設定します。 デフォルトではテストモードではfalseで、それ以外のモードではtrueです。 -
config.action_controller.relative_url_rootは、Railsにデプロイするサブディレクトリを伝えるのに使用されます。 デフォルトは、ENV['RAILS_RELATIVE_URL_ROOT']です。 -
config.action_controller.permit_all_parametersは、 全てのパラメータのmass assignmentがデフォルトのままで許可されるかを設定します。 デフォルト値はfalseです。 -
config.action_controller.action_on_unpermitted_parametersは、 もし明示的に許可されていないパラメータが見つかった場合のログ出力または例外発生を有効にします。:logまたは:raiseを設定すると、有効になります。 development、test環境のデフォルト値は:logで、 その他の環境ではfalseです。 -
config.action_dispatch.session_storeは、セッションデータのストア名を設定します。 デフォルトは:cookie_storeで、その他の有効なオプションには:active_record_store、:mem_cache_store、またはオリジナルのカスタムクラスの名前になります。 -
config.action_dispatch.default_headersは、 デフォルトで各レスポンスの値が設定されたHTTPヘッダーのハッシュです。 デフォルトでは下記のように定義されます。config.action_dispatch.default_headers = { 'X-Frame-Options' => 'SAMEORIGIN', 'X-XSS-Protection' => '1; mode=block', 'X-Content-Type-Options' => 'nosniff' } -
config.action_dispatch.tld_lengthは、アプリケーションのためのTLD(トップレベルドメイン)の長さ(数)を設定します。 デフォルトは1です。 -
ActionDispatch::Callbacks.beforeは、リクエストの前に実行するコードのブロックを取得します。 -
ActionDispatch::Callbacks.to_prepareは、ActionDispatch::Callbacks.beforeの後、 ただしリクエストの前に実行するブロックを取得します。 development環境では各リクエストで実行されますが、cache_classesがtrueに設定されているproduction環境などでは、1度だけです。 -
ActionDispatch::Callbacks.afterは、リクエストの後に実行するコードのブロックを取得します。
3.8 Action Dispatchの設定
3.9 Action Viewの設定
config.action_view includes a small number of configuration settings:
-
config.action_view.field_error_procは、 Active Recordからのエラーを表示するためのHTMLジェネレーターを提供します。 デフォルトは下記の通りです。Proc.new do |html_tag, instance| %Q(<div class="field_with_errors">#{html_tag}</div>).html_safe end -
config.action_view.default_form_builderは、デフォルトで使用するフォームのビルダーをRailsに伝えます。 デフォルトはActionView::Helpers::FormBuilderです。 もし、自分のフォームのビルダークラスを初期化(development環境では各リクエストで再読み込みされます)の後に読み込ませたい場合、 文字列(String)としてそれを渡すことが可能です。 -
config.action_view.loggerは、Action Viewからのログ情報出力に使用される、 Log4rのインターフェースに従ったロガー、またはデフォルトのRubyロガークラスを受け取ります。 nilを設定すると、ログ出力は無効になります。 -
config.action_view.erb_trim_modeは、 ERBによって使用されるトリム(trim)モードを提供します。 デフォルトは、'-'です。 詳細は、ERBドキュメントの情報を参照してください。 -
config.action_view.embed_authenticity_token_in_remote_formsは、:remote => trueであるフォーム内のauthenticity_tokenのためのデフォルトの挙動を設定します。 デフォルトではfalseに設定されており、これはremoteフォームがauthenticity_tokenを含まない事を意味し、 フォームのfragment-caching(断片キャッシュ)をする際に便利です。 remoteフォームはメタタグから信頼(authenticity)情報を取得するため、 JavaScriptがオフのブラウザをサポートしない限り、この埋め込みは不要です。 そのようなケースでは、フォームのオプションとして:authenticity_token => trueを渡すか、 この設定をtrueにすることで対応可能です。 -
config.action_view.prefix_partial_path_with_controller_namespaceは、 名前空間名が付けられたコントローラーのpartialをの描画テンプレートを、サブディレクトリから探すか否かを決定します。 例えば、コントローラー名がAdmin::PostsControllerで、下記のテンプレートを描画することを考えてみます。<%= render @post %>デフォルトで設定されているtrueであれば、
/admin/posts/_post.erbのpartialを使用します。 値をfalseに設定すると、PostsControllerのような名前空間が無い場合と同じように、/posts/_post.erbを描画します。
3.10 Action Mailerの設定
config.action_mailerには、下記の設定項目が利用可能です。
3.11 Active Supportの設定
3.12 データベースの設定
ほぼ全てのRailsアプリケーションは、データベースと連携します。
データベースを使用するには、config/database.ymlと呼ばれる設定ファイルを指定します。
新しいRailsアプリケーション上でこのファイルをが開くと、デフォルトでSQLite3を使用する設定がされている事が分かります。
このファイルは、Railsがデフォルトで実行できる3つの異なる環境のためのセクションを含みます。
-
development環境は、開発者がアプリケーションを直接手を加える開発/ローカル環境のコンピュータで使用されます。 -
test環境は、自動テストを実行する際に使用されます。 -
production環境は、あなたのアプリケーションを世界に向けて公開するために、デプロイする際に使用されます。
あなたは手動でデータベースの設定を更新する必要はありません。
もし、アプリケーションジェネレーターのオプションを見れば、
オプションの1つに--databaseという名前のものがある事に気づくでしょう。
このオプションで、最も使用されるデータベースのリストから、アダプターを選択することが可能です。
ジェネレータを繰り返し実行することが出来ます。(cd .. && rails new blog --database=mysql)
config/database.ymlの上書きを確認すると、
アプリケーションはSQliteの代わりに、MySQLを設定します。
一般的なデータベースの接続例を、この後詳しく紹介していきます。
3.12.1 SQLite3の設定
Railsは軽量なサーバ不要のデータベースアプリケーションであるSQLite3を組み込みでサポートしています。 SQLiteは負荷の多いproduction環境では荷が重く適さないため、 developmentとtest環境で使用するのが良いでしょう。 新しいプロジェクトを作成すると、RailsはデフォルトでSQliteデータベースを使用しますが、 これはその後いつでも変更することが可能です。
下記は、デフォルトの設定ファイル(config/database.yml)のdevelopment環境の接続情報のセクションです。
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
Railsは、データベースの設定を何も行わなくても動作する事から、 デフォルトのデータストレージにSQLite3データベースを使用します。 Railsはまた、"すぐに使える"MySQLとPostgreSQLもサポートし、多くのデータベースシステムのためのプラグインが用意されています。 もし、production環境でデータベースを使用する場合は、Railsにはそれらのアダプタが設定されるでしょう。
3.12.2 MySQLの設定
もし、デフォルトのSQLite3の代わりに、MySQLを選択する場合、
config/database.ymlを少し変更する必要があります。
下記はdevelopmentセクションの例になります。
development:
adapter: mysql2
encoding: utf8
database: blog_development
pool: 5
username: root
password:
socket: /tmp/mysql.sock
もし、開発マシンにrootユーザーと空パスワードで、MySQLがインストールされていれば、 この設定で動作するはずです。 そうでなければ、developmentセクションのusernameとpasswordを適切なものに変更してください。
3.12.3 PostgreSQLの設定
もし、PostgreSQLを選択するのであれば、config/database.ymlをPostgreSQLを使用するように変更します。
development:
adapter: postgresql
encoding: unicode
database: blog_development
pool: 5
username: blog
password:
PREPARE文は、このようにして無効にすることが出来ます。
production:
adapter: postgresql
prepared_statements: false
3.12.4 JRubyプラットフォームのためのSQLite3の設定
もし、SQLite3とJRubyを使用するのであれば、
config/database.ymlを少し変更する必要があります。
下記はdevelopmentセクションになります。
development:
adapter: jdbcsqlite3
database: db/development.sqlite3
3.12.5 JRubyプラットフォームでのMySQLの設定
もし、MySQLとJRubyを使用するのであれば、
config/database.ymlは少し変更する必要があります。
下記はdevelopmentセクションになります。
development:
adapter: jdbcmysql
database: blog_development
username: root
password:
3.12.6 JRubyプラットフォームでのPostgreSQLの設定
もし、PostgreSQLとJRubyを使用するのであれば、
config/database.ymlは少し変更する必要があります。
下記はdevelopmentセクションになります。
development:
adapter: jdbcpostgresql
encoding: unicode
database: blog_development
username: blog
password:
developmentセクション内のusernameとpasswordは、適切なものに変更してください。
3.13 Rails環境の設定
デフォルトで、Railsには3つの"development"、"test"、"production"の環境が備わっています。 ほとんど場合これで十分ですが、やむを得ず環境がもっと必要になるようなケースも存在するかもしれません。
production環境をミラーリングしますが、テストでしか使用されないサーバをあなたが持っていると仮定してください。
そのようなサーバは一般的に"ステージングサーバ"と呼ばれます。
"ステージング"と呼ばれる環境をこのサーバのために定義するには、
config/environments/staging.rbと呼ばれるファイルを作成します。
config/environments内に存在するファイルを使用して、スタート時に必要な変更を指定してみてください。
作成したステージングの環境はデフォルトで用意されているものと同じく、
rails server -e stagingでサーバを起動し、
rails console staging、Rails.env.staging?などが動作します。
4. Rails環境の設定
Railsの一部は、環境値が与えられることによって設定することも可能です。 下記の環境値は、Railsの様々な部分で見分けられます。
5. 初期化ファイルの使用
フレームワークが読み込まれ、gemがアプリケーションに取り込まれると、
次にRailsは初期化を行います。
イニシャライザー(initializer)は、アプリケーション内のconfig/initializers下に格納されたRubyファイルです。
イニシャライザーを使用して、全てのフレームワークとgemが読み込まれた後に、
オプションの設定のような、行うべき設定を保持させることが出来ます。
Railsはイニシャライザーのフォルダの階層を下って探してくれるため、 必要であれば、イニシャライザーにサブディレクトリを使用することが出来ます。
もし、イニシャライザーで依存関係の都合で読み込み順を指定する必要がある場合、
ファイルの名前付けによって読み込み順を制御することが可能です。
イニシャライザーのファイルは、それらのパスのアルファベット順で読み込まれます。
例えば、01_critical.rbは、02_normal.rbの前に読み込まれます。
6. イベントの初期化
Railsは、フックする事が出来る5つの初期化イベントを持ちます。 (リストされている順に実行されます)
これらのフックするイベントを定義するには、
Rails::Application、Rails::Railtie、Rails::Engineサブクラスのいずれかの中で、
ブロック文法を使用します。
module YourApp
class Application < Rails::Application
config.before_initialize do
# 初期化コードをここに書きます。
end
end
end
代わりに、Rails.applicationオブジェクト上のconfigメソッドを使用してそれを行うことも可能です。
Rails.application.config.before_initialize do
# ここに初期化コードを書きます。
end
ルーティング(経路)を明確にするアプリケーションの一部は、
after_initializeブロックが呼ばれるこの時点ではまだ設定されません。
6.1 Rails::Railtie#initializer
Railsは開始時に実行される幾つかのイニシャライザーを持ち、
それは全てRails::Railtieのinitializerを使用して定義されています。
下記は、Active Supportでのinitialize_whiny_nilsイニシャライザーの例です。
initializer "active_support.initialize_whiny_nils" do |app|
require 'active_support/whiny_nil' if app.config.whiny_nils
end
initializerメソッドは、1つ目がイニシャライザーの名前、
2つ目がオプションのハッシュ、3つ目がブロックの3つの引数を受け取ります。
オプション内の:beforeキーは、このイニシャライザーの前に実行する必要のあるイニシャライザーを指定することができ、
:afeterはその後に実行する必要のあるイニシャライザーを指定することが可能です。
initializerメソッドを使用して定義されたイニシャライザーは、
:beforeまたは:afterを使用したものを除き、定義された順に実行されます。
ロジックに問題が無ければ、他のイニシャライザーのチェーンの前または後にイニシャライザーを配置しても構いません。 あなたが、"one"から"four"と名付けられた(その順に定義された)4つのイニシャライザーを持ち、 "four"を「"four"の前に、ただし"three"の後に」と定義したとすると、 これはロジックに問題があるため、Railsはイニシャライザーの順番を判断することが出来ません。(翻訳に自信なし)
initializerメソッドのブロック引数は、アプリケーション自身のインスタンスであり、
例のようにしてconfigメソッドを使用することによってconfigにアクセスする事が可能です。
何故なら、Rails::ApplicationはRails::Railtie(間接的に)から継承されており、
config/application.rb内のメソッドをアプリケーションのイニシャライザーを定義するために使用することが出来るためです。
6.2 Initializers
下記は、Rails内の定義されている順に列挙した包括的なイニシャライザーのリストです。 (そのため、特に明記しない限り、実行されます(翻訳に自信なし))
7. データベースのプーリング
Active Recordのデータベース接続は、コネクションプールがデータベース接続の制限された数のスレッドアクセス量で同期することを保証する
ActiveRecord::ConnectionAdapters::ConnectionPoolによって管理されます。
この制限のデフォルトは5で、database.ymlで設定可能です。
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
デフォルトでコネクションプーリングはActive Record内で扱われるため、 全てのアプリケーションサーバ(Thin、mongrel、Unicorn等)で同じように扱うべきです。 始めはデータベースコネクションプールは空で、必要に応じて追加のコネクションを作成し、 コネクションプールの制限に達するまでそれを行います。
リクエストは始めにデータベースへアクセスする必要があるコネクションを調べ、 その後リクエストの最後に再びコネクションを調べます。 これは、追加のコネクションスロットがキュー内の次のリクエストのために再び利用可能であることを意味します。(翻訳に自信なし)
もし、Rails.threadsafe!モードが有効なのであれば、
いくつかのスレッドが同時に複数のコネクションにアクセスしているかもしれません。
そのため、あなたの現在のリクエスト負荷に応じて、
限られた接続数で競合する複数のスレッドを持つことも可能です。(翻訳に自信なし)
© 2010 - 2017 STUDIO KINGDOM