jruby実行中のオペレーティングシステムの取得
最近PHPを書いている時、PHPを通してOSで現在のオペレーティングシステムがWindowsの下にあるかクラスUnixの下にあるかを判断するのですが、Rubyを使えば現在のオペレーティングシステムをどう判断すればいいのか考えていました.そこで仕事の合間にGoogleを検索してjavaeyeでrobbinの古い投稿を見つけました.
rubyが実行するオペレーティングシステムのバージョンを取得 .
robbin環境変数RUBY_を使用PLATFORMの中でオペレーティングシステムの情報を獲得して、コードは簡潔で明瞭で、私はMRIの下で試験に合格して、残念ながらJRubyの下でだめで、JRubyの中のRUBY_のためですPLATFORMはすべてのオペレーティングシステムの下にjavaが表示され、実際のオペレーティングシステムを判断できません.
検索の過程で、rubyのオペレーティングシステムを判断する別の方法を見つけました.それはrbconfigを使用し、コードは以下の通りです.
以上のコードでJRubyで現在のオペレーティングシステムを判断でき、MRIでも実行できます.
原理は何ですか.MRIでは、libruby1.8i 386-mswin 32ディレクトリで(linuxではx 86_64-linux)rbconfig.rbが見つかりました.JRubyではこのファイルが見つかりません.JRubyのソースコードを見ると、ディレクトリsrcorgjrubylibrariesの下にRbConfigLibrary.javaがあります.コードはJVMのos.nameのPropertyを呼び出して以前のオペレーティングシステムを動的に判断し、CONFIG変数に埋め込まれます.
rubyが実行するオペレーティングシステムのバージョンを取得 .
robbin環境変数RUBY_を使用PLATFORMの中でオペレーティングシステムの情報を獲得して、コードは簡潔で明瞭で、私はMRIの下で試験に合格して、残念ながらJRubyの下でだめで、JRubyの中のRUBY_のためですPLATFORMはすべてのオペレーティングシステムの下にjavaが表示され、実際のオペレーティングシステムを判断できません.
検索の過程で、rubyのオペレーティングシステムを判断する別の方法を見つけました.それはrbconfigを使用し、コードは以下の通りです.
require 'rbconfig'
def windows?
!(Config::CONFIG['target_os']=~/mswin32/).nil?
end
以上のコードでJRubyで現在のオペレーティングシステムを判断でき、MRIでも実行できます.
原理は何ですか.MRIでは、libruby1.8i 386-mswin 32ディレクトリで(linuxではx 86_64-linux)rbconfig.rbが見つかりました.JRubyではこのファイルが見つかりません.JRubyのソースコードを見ると、ディレクトリsrcorgjrubylibrariesの下にRbConfigLibrary.javaがあります.コードはJVMのos.nameのPropertyを呼び出して以前のオペレーティングシステムを動的に判断し、CONFIG変数に埋め込まれます.