【问题标题】:What's the best way to get the hostname from the env hash in a Rails app?从 Rails 应用程序的 env 哈希中获取主机名的最佳方法是什么?
【发布时间】:2011-12-14 12:13:27
【问题描述】:

我正在写一个OmniAuth dynamic provider 并且在回调中我需要获取当前的主机名(该应用程序在几个不同的主机名中工作)。我没有请求对象,只有一个大的环境散列。我发现这个哈希包含一个条目 env["SERVER_NAME"],它带有主机名,但我不确定这是否是一个稳定的条目,或者它可能会根据 Web 服务器或类似的东西而改变。

我还在成员变量@host中找到了隐藏在env["action_dispatch.routes"]中的主机名。

知道目前获取主机名的最佳或规范方法是什么?

【问题讨论】:

    标签: ruby-on-rails omniauth hostname env


    【解决方案1】:

    该应用程序尚未投入生产,但到目前为止,使用env["SERVER_NAME"] 的私人测试版就像一个魅力。

    【讨论】:

      【解决方案2】:

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

      request.host
      

      虽然我不确定这是否与您已经看到的有所不同。在我正在开发的 Rails 3.1 应用程序中,这对我来说很好。

      【讨论】:

      • 我不是 Rails 控制器,我正在实现 OmniAuth 动态提供程序的设置方法。
      • 我自己没有尝试过,但我建议尝试在您的代码中引用 request.host 并查看它是否有效。我不得不承认,我不确定在 Rack 中为这个过程创建了哪些变量。
      • 是的,我试过了,没用。现在我正在使用 env["SERVER_NAME"] 但我还没有在生产中测试。
      猜你喜欢
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 2011-06-17
      • 2011-06-05
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多