在 Rails 应用程序中从 env 哈希获取主机名的最佳方法是什么?
我正在编写一个 OmniAuth 动态提供程序,在回调中我需要获取当前主机名(该应用程序可以在多个不同的主机名下运行)。我没有请求对象,只有一个大的环境哈希。我发现这个哈希包含一个条目 env["SERVER_NAME"] 和主机名,但我不确定这是否是一个稳定的条目,或者它可能会根据网络服务器或类似的东西而改变。
我还发现主机名埋藏在成员变量@host中的env["action_dispatch.routes"]中。
您知道此时获取主机名的最佳或规范方法是什么吗?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该应用尚未投入生产,但到目前为止,使用
env["SERVER_NAME"]
的私人测试版非常有效。The app is not in production yet, but so far the the private beta, using
env["SERVER_NAME"]
worked like a charm.在 Rails 控制器中,您可以简单地使用:
尽管我不确定这是否与您已经看到的有所不同。这对于我正在开发的 Rails 3.1 应用程序来说效果很好。
In a rails controller, you can simply use:
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.