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

And*_*rew 3 ruby-on-rails hostname initializer

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

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

config.twitter.callback_url "http://example.dev/auth/callback?provider=twitter"
Run Code Online (Sandbox Code Playgroud)

... example.dev当我在本地开发中使用Pow时,主机名在哪里.这必须是example.com如果应用程序是在生产,或者staging.example.com如果它在分期等.

我想将此行设置为如下所示:

config.twitter.callback_url "#{Rails.hostname}/auth/callback?provider=twitter"
Run Code Online (Sandbox Code Playgroud)

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

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

有什么建议?

小智 5

使用:

`hostname`
Run Code Online (Sandbox Code Playgroud)

它使用Unix"hostname"实用程序,并返回一个字符串.


Joe*_*oni 5

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