web-dev-qa-db-ja.com

Railsコントローラからホスト名を取得します

Railsアプリケーションが実行されているマシンのホスト名をコントローラから取得しようとしています。

WindowsとLinuxの両方で機能することを考慮して、これを行うための最良の方法は何ですか?

38
RailsSon

常にあります:

require 'socket'
...
Socket.gethostname

これをテストするのに便利なWindowsボックスはありませんが、ドキュメントでは* nix固有であることについて言及していません。

注:requireステートメントは、Rails 4、およびおそらく他のRailsバージョンでも必要ありません。 Railsを使用せずにプレーンなRubyを実行する場合に必要です。

30
Wayne Conrad

あなたがしなければならないすべてはあなたのコントローラーのリクエストオブジェクトを見ることです:

request.Host_with_port

または、ポートが不要な場合は、

request.Host
86
Wilhelm

バックティックとコマンドhostnameを使用します

current_Host = `hostname`

これにより、コマンドがシェルに送信され、ホスト名が返されます。少なくともDebian Linux、Windows、Solarisで動作します。

6
btelles

プロトコルからポートへの完全なドメインパスが必要な場合は、以下を試してください。

full_domain_path = request.env['rack.url_scheme'] + '://' + request.Host_with_port
0
webaholik