0

coloredターミナルでのカラー印刷には gem と ruby​​ loggerを使用しています。Linux と Windows でこのコードを実行する必要があります。

Windows では、最初require 'win32console'にカラー印刷を行う必要があります (代わりに ANSI エスケープ文字が表示されるだけです)。しかし、Linuxでwin32consoleが必要な場合、明らかに壊れます。

Rubyでこのような状況を処理する通常の方法は何ですか? 変数に気付きましたRUBY_PLATFORMが、Windows VM で試してみましたが"i386-mingw32"、何か変でした。それに加えて条件を使用することは、私が必要とするものに取り組むためのかなり不安定な方法のように思えるので、この問題がより良い解決策を持っていることを望んでいました.

4

2 に答える 2

2

RUBY_PLATFORM を使用することに問題はありません。それが目的です。また、OS 自体に尋ねることもできます。

ENV['OS']

Vista では "Windows_NT" が表示されます。

他のOSに対応するものはわかりません。

以下も参照してください。

于 2013-04-09T06:53:23.340 に答える
1

常にあります:

begin
  require 'win32console'
rescue LoadError
end

私はこれを書くのが簡単で、自分が使用しているOSとそれをロードするかどうかを自分で決定しようとすることについて推論するのが簡単だと思います.

更新: win32console は gem ではなく組み込みだと思っていました。Win32API はすべての Windows インストールで利用できると思いますので、「これは Windows ですか?」をテストするのに適したプロキシです。(「これはどの OS で、あれは Windows ですか?」ではなく)。

begin
  require 'Win32API'
  windowsOS = true
rescue LoadError
  windowsOS = false
end

if windowsOS
  begin
    require 'win32console'
  rescue LoadError
    # Prompt user to install win32console gem
  end
end
于 2013-04-09T07:07:56.350 に答える