㊙️

Chromeでlocalhostのサブドメインが使えるってよ

2023/06/14に公開

1つのRailsアプリ内で複数ドメインのサービスを動かしたい時、皆さんはどうやって開発しますか?

自分なら、ローカル環境で任意のドメインにアクセスできるように環境を作るところから始めます。
ホストPCのDNSの設定は変えたくないな〜と思いながら、Dockerだけでドメイン設定ができないだろうかと試行錯誤していました。

その時、大変な事を発見しました...!!!!

Chromeだと、DNSの設定とかせずに localhost のサブドメインにアクセスできる!!

なんだって〜〜〜〜!!!
衝撃すぎていままでDockerで頑張ってた設定は全部なかったことにしました。

どういうこと?

普段皆さんは、ブラウザで localhost:3000 にアクセスして動作確認しますよね。
その localhost のサブドメインが使えるんですよ!!!
例えば kanahebi.localhost:3000 とかも設定なしでアクセスできちゃうんです。
アクセスしてみると localhost:3000 と同じものが表示されませんか?

手元で localhost が動いている人はチョット試してみてください。
「え!」とか「うお!!」とか声が出ませんでしたか?
出た方はこっそり教えてくださいねw

その仕組みを使ってドメイン別のルーティングをしてみます

config/routes.rb
Rails.application.routes.draw do
  constraints domain: 'blog.localhost' do
    root "articles#index", as: :blog
    resources :articles
  end

  constraints domain: 'sns.localhost' do
    root "sns#index", as: :sns
  end

  constraints domain: 'task.localhost' do
    root "tasks#index", as: :task
  end
end

root を各ドメインで設定したい場合は、 as: :hogehoge のようにルーティングの名前を指定する必要があるので注意が必要です。

ちなみに

Chrome以外にも、FirefoxやEdgeでも同じ使い方ができるようです!
Safariではできませんでした😢

最後に

株式会社mofmofの「水曜日の個人開発」という取り組みの中でアプリを作っている時に、この超絶便利技を見つけました。
皆さんも超絶便利技を見つけた際にはこっそり教えてくださいね!!

https://indie-dev.mof-mof.co.jp

Discussion