【问题标题】:Rails: Get hostname in an initializerRails:在初始化程序中获取主机名
【发布时间】:2012-04-03 14:16:43
【问题描述】:

我正在使用 Sorcery 进行身份验证,我需要在其初始化程序中设置第三方身份验证。

初始化程序有一行如下所示:

config.twitter.callback_url "http://example.dev/auth/callback?provider=twitter"

...example.dev 是我在本地开发中使用 Pow 时的主机名。如果应用程序处于生产状态,则需要为 example.com,如果应用程序处于暂存状态,则需要为 staging.example.com,等等。

我想把这条线设置成这样:

config.twitter.callback_url "#{Rails.hostname}/auth/callback?provider=twitter"

...但request.host 是我所知道的唯一知道这一点的方法,并且它仅在控制器级别可用。

我可以使用条件测试并为每个环境手动设置一个主机名,但是当我在不同的本地和暂存环境中进行测试时,能够以编程方式设置它会很棒。

有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails hostname initializer


    【解决方案1】:

    您可以通过 Socket.gethostname 获取主机名,它是 Ruby 标准库的一部分。

    【讨论】:

      【解决方案2】:

      用途:

      `hostname`
      

      它使用 Unix 的“主机名”实用程序,它返回一个字符串。

      【讨论】:

      • 带反引号?如config.twitter.callback_url "#{`hostname`}/..." ?
      • 对,是的,反引号。您可以使用 Rails 控制台轻松测试它。只需进入控制台并输入带有反引号的“主机名”,看看它会返回什么。
      猜你喜欢
      • 1970-01-01
      • 2012-03-23
      • 2011-09-20
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多