2012-03-19 6 views
2

私はSorcery for Authenticationを使用しており、イニシャライザでサードパーティ認証を設定する必要があります。Rails:イニシャライザでホスト名を取得

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

...私は地元の発展に捕虜を使用していたときに​​はホスト名です:

初期化子は、このような行があります。これは、アプリは、生産している、またはstaging.example.comあれば、それはステージングでは、など

だ場合、私はこのようなものにするために、このラインを設定したいexample.comする必要があります:

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

...しかしrequest.host私が知っていることを知っている唯一の方法です。コントローラーレベルでしか利用できません。

条件付きテストを使用し、環境ごとに手動でホスト名を設定できますが、私は異なるローカルおよびステージング環境でテストするので、これをプログラムで設定するだけでよいでしょう。

提案がありますか?

答えて

4

用途:

`hostname` 

Unixの "ホスト名" ユーティリティを使用し、それが文字列を返します。

+0

バックティックはありますか? "config.twitter.callback_url"#{\\ hostname \ '}/..." 'のように? – Andrew

+0

はい、はい、バックチック。 Railsコンソールで簡単にテストすることができます。コンソールに移動してバッククォートで "hostname"と入力すると、返される内容が表示されます。 –

+0

非常に役に立ちました、ありがとう! – Andrew

3

ホスト名は、Ruby標準ライブラリの一部であるSocket.gethostnameで取得できます。

関連する問題