What's the best way to get the hostname from the env hash in a Rails app?
-
16-03-2021 - |
Question
I'm writing an OmniAuth dynamic provider and in the callback I need to get the current hostname (the app works in several different hostnames). I don't have the request object, just a big env hash. I found this hash contains an entry, env["SERVER_NAME"], with the hostname, but I'm not sure if that's a stable entry or it may change depending on the web server or stuff like that.
I also found the hostname buried in env["action_dispatch.routes"] in the member variable @host.
Any ideas what's the best or canonical way to get the hostname at this point?
Solution
The app is not in production yet, but so far the the private beta, using env["SERVER_NAME"]
worked like a charm.
OTHER TIPS
In a rails controller, you can simply use:
request.host
Though I'm not sure if that sources anything different from what you already looked at. This works fine for me in a Rails 3.1 app I'm working on.