Ruby でユーザー名、ホスト名、および osname を取得するための、堅牢でエレガントでポータブルなソリューションを探しています。次のように設定されたフォルダー構造を作成したいと思います。
linux/maschine1/user53, or
linux/maschine2/user53, or
windows/maschine1/user53, or
mac/supermac/superuser
ユーザー名とホスト名は、Linux シェルの を反映するuser@computer:~$
必要があり、オペレーティング システムは と に分割する必要がwin
ありlinux
ますmac
。
ENV['USER'/'USERNAME']
、またはEtc.getLogin()
ユーザー名、Socket.gethostname
コンピューター名、およびRUBY_PLATFORM
os-name の定数を使用して、いくつかのアプローチを見つけました。しかし、それらはすべて、JRuby などの異なるプラットフォームで実行したり、異なるオペレーティング システムで実行したりすると問題が発生します。
では、それぞれに最適な選択はどれでしょうか?
ありがとう!
編集:
答えが与えられる少し前に、私はこの解決策にたどり着きました。Builder は Java コマンドも使用できるため、次のような値を取得できます。
os = Java.java.lang.System.getProperty('os.name')
usr = Java.java.lang.System.getProperty('user.name')
host = Java.java.net.InetAddress.getLocalHost().getHostName()
しかし、可能な限り言語の一貫性を保つために、純粋な Ruby の方法を使用すると思います。