1

自分で作成したRuby1.9.3インストールで、などのFileUtilsメソッドを使用したときに同等のUnixシェルを正しく出力するRakefileがありcpますmkdir

ただし、バージョン1.8.6であるMac OS X(具体的には10.5)に同梱されている標準のRubyでは、これは行われません。

実行時にコマンドを出力してほしい。:verbose => trueすべての呼び出しに追加する以外に、OS Xの1.8.6Rubyでこれを有効にする方法はありますか?(これはうまくいかないかもしれません。)

問題のRakefileは次のとおりです:https ://github.com/dpkendal/tools-osx/blob/master/Rakefile

4

1 に答える 1

1

それは意味がありません。1.9.3は:verbose、明示的に指示されない限り、実行すべきではありません。mkdirたとえば、1.9.3libでの実装を確認できます。

  def mkdir(list, options = {})
    fu_check_options options, OPT_TABLE['mkdir']
    list = fu_list(list)
    fu_output_message "mkdir #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
    return if options[:noop]

    list.each do |dir|
      fu_mkdir dir, options[:mode]
    end
  end

:verboseここで、オプションが明示的に指定されていない限り、メッセージが生成されないことがわかります。

ただし、:verboseすべてのメソッドで有効にするには、名前空間にFileUtils簡単に入れることができます。include FileUtils::Verboseこれは1.8ルビーと1.9ルビーの両方で機能します。

irb(main):001:0> RUBY_VERSION
=> "1.8.7"
irb(main):002:0> include FileUtils::Verbose
=> Object
irb(main):003:0> mkdir 'fooof'
mkdir fooof
=> ["fooof"]

ところで、Rakeはすでに1.9.3でこれを行っている可能性があります。これは、1.8.6ではなく1.9.3で行われている理由を説明しています。私はこれをチェックしませんでした、しかしそれは私が考えることができる唯一の説明です。


Rakeは、と呼ばれる独自のFileUtils拡張機能を提供しますRake::FileUtilsExt。このモジュールにはverboseフラグがあります。これをアクティブにするには、これをRakefileの先頭に追加するだけです。

Rake::FileUtilsExt.verbose(true)
于 2012-01-12T14:33:42.560 に答える