Help us understand the problem. What is going on with this article?

Railsでドメインごとにroutesを設定する

More than 1 year has passed since last update.

サブドメインで切り替えるのはあるけどドメインごとに切り替える情報はあまりなかったのでメモ。

環境: Rails5.2.0, ruby2.5.1

routes.rb
Rails.application.routes.draw do
  constraints -> (req) { req.host == ENV['MAIN_HOST'] } do
    root 'dashboard#index'
    devise_for :users, path: 'users'

    resources :hoges
  end

  constraints -> (req) { req.host == ENV['ADMIN_HOST'] } do
    devise_for :admin_users, path: 'admin_users'

    mount RailsAdmin::Engine => '/rails_admin', as: 'rails_admin'

    scope module: 'admin_users' do
      root 'dashboard#index'
      resource :fugas
    end

  end

  mount LetterOpenerWeb::Engine, at: '/letter_opener' if Rails.env.development?
end

constraintsでHOSTを判定して使えるルートを切り替えています。
管理用のドメイン(ENV['ADMIN_HOST'])のコントローラーはcontrollers/admin_usersフォルダの配下に全てツッコミますが、url上は/admin_usersを見せなくても良いように、moduleを指定しています。

なので、dashboard_controllerはcontrollers/dashboard_controllerは.rbcontrollers/admin_users/dashboard_controllerは.rbの2つを用意しているような形です。

shwld
主に開発で得られた知見を記録していきます。 記載された内容は、所属する企業や団体の公式見解ではありません。
https://shwld.net
mof-mof
「つくって人をしあわせにする」をビジョンにAIチャットボットや開発チームレンタル等のサービスを提供している渋谷のIT企業です
https://www.mof-mof.co.jp/about
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away