後へ      Topへ      次へ

サブディレクトリ設定

現在の Railsアプリの URL は、
http://localhost:3000/ から始まり、
次に books などの中身が続きます。

ただ、
1つのサーバー上で複数の Railsアプリを共存させたいケースでは、
それぞれのアプリを区別する仕組みが必要です。
一般には、「サブディレクトリ」を追加します。

以降、/book_mgmt に設定したいものとして説明します。

変更後の URL は、
http://localhost:3000/ から
http://localhost:3000/book_mgmt/ に変わります。

RAILS_RELATIVE_URL_ROOT

一般的なのが、relative_url_root で設定する方法です。

PowerShell のプロンプトで
$Env:RAILS_RELATIVE_URL_ROOT = "/book_mgmt"
と入力します。

Railsガイドではここまでの説明しかありませんが、
記載現在、次に説明するコード変更も入れないと動作してくれないようです。

relative_url_root に加えて、
\config.ru

run Rails.application

map ActionController::Base.config.relative_url_root || "/" do
  run Rails.application
end

に書き換えます。

参考リポジトリ: https://github.com/Bonv-dev/book_mgmt/commit/4cb95f9

ただし、
RAILS_RELATIVE_URL_ROOT を設定すると、
自動テストが失敗するようになります。
よって、
本番環境でのみ設定するようにします。

ちなみに、
Railsガイドでは、
\config\application.rb に
config.relative_url_root = "/book_mgmt"
を追記する方法も書かれていますが、
このままだと自動テストが失敗するので、
config.relative_url_root = "/book_mgmt" unless Rails.env.test?
のほうがいいかもしれません。

後へ      Topへ      次へ