2012-01-12 3 views
1

私は、正しく株式ルビー船その上で、のようなcpmkdirなどRakefileでそれらのアクションを出力するためにfileutils呼び出しを取得するには?

しかし、私はのfileutilsメソッドを使用するUnixシェルと同等の出力私自身内蔵のRuby 1.9.3のインストールに、Rakefileを持っていますバージョン1.8.6のMac OS X(特に10.5)では、これをしません。

実行しているときにコマンドを出力したいと思います。すべての呼び出しに:verbose => trueを追加するのに足りないOS Xの1.8.6 Rubyでこれを有効にする方法はありますか? (。どちらでも動作しない場合があります)

問題のRakefileは次のとおりです。意味がありませんhttps://github.com/dpkendal/tools-osx/blob/master/Rakefile

答えて

1

。明示的に指示されない限り、1.9.3は:verboseを行うべきではありません。あなたは、例えば1.9.3 libにmkdirの実装を見ることができますがあり

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オプションが明示的に供給されない限り、メッセージが生成されていないことがわかります。

しかし、すべてFileUtilsの方法で:verboseを有効にするには、あなたのネームスペースに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"] 

ところで、それはレーキは、すでに1.9.3でこれを行うことかもしれないが、それはそれは1.8.6に1.9.3ではなく何ん理由を説明することになります。私はこれをチェックしなかったが、それは私が考えることができる唯一の説明だ。


Rakeには、Rake::FileUtilsExtという独自のFileUtils拡張機能があります。このモジュールのフラグはverboseです。これを有効にするには、単にこれをRakefileの先頭に追加してください:

Rake::FileUtilsExt.verbose(true) 
+0

本当に、冗長はRuby 1.9.3のRakefilesのデフォルトです。そして 'include FileUtils :: Verbose'は問題を解決しません。 https://github.com/morgant/tools-osx/pull/10#issuecomment-3457844 –

+0

@David - 私の答えの下にある私の更新を見ます。 – Casper

関連する問題