Railsアプリケーションが実行されているマシンのホスト名をコントローラから取得しようとしています。
WindowsとLinuxの両方で機能することを考慮して、これを行うための最良の方法は何ですか?
常にあります:
require 'socket'
...
Socket.gethostname
これをテストするのに便利なWindowsボックスはありませんが、ドキュメントでは* nix固有であることについて言及していません。
注:requireステートメントは、Rails 4、およびおそらく他のRailsバージョンでも必要ありません。 Railsを使用せずにプレーンなRubyを実行する場合に必要です。
あなたがしなければならないすべてはあなたのコントローラーのリクエストオブジェクトを見ることです:
request.Host_with_port
または、ポートが不要な場合は、
request.Host
バックティックとコマンドhostname
を使用します
current_Host = `hostname`
これにより、コマンドがシェルに送信され、ホスト名が返されます。少なくともDebian Linux、Windows、Solarisで動作します。
プロトコルからポートへの完全なドメインパスが必要な場合は、以下を試してください。
full_domain_path = request.env['rack.url_scheme'] + '://' + request.Host_with_port