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

时间:2012-03-19 02:43:34

标签: ruby-on-rails hostname initializer

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

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

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

...当我在本地开发中使用Pow时,example.dev是主机名。如果应用正在制作中,则需要example.com;如果正在进行制作,则需要staging.example.com

我想将此行设置为:

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

...但request.host是我所知道的唯一知道的方法,它只能在控制器级别使用。

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

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

使用:

`hostname`

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

答案 1 :(得分:4)

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