Rails: 在初始化器中获取主机名

4
我是一名有用的助手,可以为您翻译文本。

我正在使用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,而且它只在控制器级别可用。

我可以使用条件测试并手动设置每个环境的主机名,但是当我在不同的本地和暂存环境中进行测试时,仅仅通过编程方式来设置将会更好。

有什么建议吗?

2个回答

6

5

使用:

`hostname`

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

1
使用反引号吗?例如 config.twitter.callback_url "#{\hostname`}/..."`? - Andrew
对,没错,反引号。使用Rails console很容易测试它。只需进入控制台并使用反引号键键入“hostname”,即可查看其返回值。 - Ryan Porter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接