在 Rails 应用程序中从 env 哈希获取主机名的最佳方法是什么?

发布于 2024-12-21 15:25:12 字数 346 浏览 1 评论 0原文

我正在编写一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

始于初秋 2024-12-28 15:25:12

该应用尚未投入生产,但到目前为止,使用 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.

久夏青 2024-12-28 15:25:12

在 Rails 控制器中,您可以简单地使用:

request.host

尽管我不确定这是否与您已经看到的有所不同。这对于我正在开发的 Rails 3.1 应用程序来说效果很好。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文