2012-01-12 25 views
1

我有一個Rake文件當中,對我自己建的Ruby 1.9.3安裝,Unix外殼相當於當我使用一個文件實用程序方法正確輸出如cpmkdir如何讓fileutils調用在Rakefile中輸出他們的動作?

然而,股市的紅寶石的船舶使用版本爲1.8.6的Mac OS X(特別是10.5),他們不這樣做。

我希望他們在執行命令時輸出。有沒有辦法在OS X的1.8.6 Ruby中啓用此功能,而不是在每次調用時添加:verbose => true? (這甚至可能不工作)。

的Rake文件中的問題是:https://github.com/dpkendal/tools-osx/blob/master/Rakefile

回答

1

這是沒有意義的。除非明確告知,否則1.9.3不應該做:verbose。你可以看一下的mkdir實施在1.9.3的lib例如:

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簡單地插入到您的名稱空間中。 BTW

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.9.3,而不是在1.8.6:這個工作在兩個1.8和1.9紅寶石。我沒有檢查,但這是我能想到的唯一解釋。


Rake提供了自己的FileUtils擴展名爲Rake::FileUtilsExt。該模塊有一個verbose標誌。要激活它,只需將其添加到Rakefile的頂部:

Rake::FileUtilsExt.verbose(true) 
+0

確實,verbose是Ruby 1.9.3中Rakefiles的默認值。而'包含FileUtils :: Verbose'不能解決這個問題。 https://github.com/morgant/tools-osx/pull/10#issuecomment-3457844 – 2012-01-12 18:46:35

+0

@大衛 - 看到我的更新在我的答案底部。給那一槍。 – Casper 2012-01-12 20:00:32

相關問題