2010-09-11 23 views

回答

7

除了您不必擔心確保您的目標平臺上安裝了您正在使用的特定工具,以及超出正確引用shell怪異的問題(特別是在您遇到問題時儘管目標是Windows和Unix,Cygwin,GNUWin32等),如果您使用Ruby的FileUtils,則您的Ruby函數調用的開銷適中,而如果您使用外部實用程序,則會產生相當大的開銷一個外部過程每一個「呼叫」。跨多個平臺

  • +0

    ,但您不得不擔心是否在目標上安裝了Ruby。 – ghostdog74 2010-09-12 08:24:12

    +0

    這應該是很明顯的,因爲提問的人在談論Ruby模塊,該程序無疑是Ruby程序。 – 2010-09-12 08:35:27

    +0

    我不是說它不是Ruby程序。我正在談論您的陳述「除了您不必擔心確保您的目標平臺上安裝了您正在使用的特定工具」這一事實。顯然,在運行他的Ruby程序之前,您還需要確保目標平臺具有Ruby。 – ghostdog74 2010-09-12 10:53:20

    2

    它們更容易從Ruby腳本內部調用,因爲它們接受Ruby對象作爲參數。這意味着你不必處理逃跑,也不必每次打電話給他們。

    +1

    你不必擔心做'系統時逃逸(」 cp「,file1,file2)'要麼(儘管你在做'system'(」cp#{file}#{file2}「)時纔會這樣做)。 – sepp2k 2010-09-11 02:08:54

    +0

    轉義是什麼意思?什麼使用系統(「cp source_file destination_file」)轉義 – 2010-09-11 02:15:03

    +0

    @ajsie:當使用'system'的單參數版本時,您需要轉義空格和特殊外殼字符。例如。 'system(「cp源文件目標文件」)'將不起作用,因爲空格不會被轉義。但是'system(「cp」,「source file」,「destination file」)'可以正常工作。 – sepp2k 2010-09-11 02:19:40

    6

    FileUtils方法在Windows上工作。

    +0

    so shell can tools。 (即cygwin,GNU win32) – ghostdog74 2010-09-11 08:09:55

    +1

    @ ghostdog74:僅當你先安裝它們。要點是:如果您使用FileUtils,您的腳本將在每個使用ruby的系統上運行。如果你使用cp,你的腳本將在每個系統上運行ruby和cp。沒有理由爲複製文件這樣簡單的事情添加額外的依賴關係。 – sepp2k 2010-09-11 11:58:27

    +0

    你必須先安裝Ruby。 – ghostdog74 2010-09-12 08:23:18

    1

    當您將東西放到外殼中時,您正在爲這些應用程序添加依賴項。 FileUtils是純粹的紅寶石,所以它可以在ruby工作的任何地方工作(並且工作原理相同,或多或少)。

    -2

    我不會說使用Ruby的FileUtils沒有什麼好處,因爲你可以在任何你有Ruby的地方使用它們(特別是如果你的任務在web開發中)。但這並不意味着你不能在其他平臺上使用這些shell工具。是的,您可以在* nix shell中編寫腳本,並且可以在使用cygwin或GNU win32(及其他)的Windows中進行很少修改或不進行修改的情況下運行它們。 就Ruby的FileUtils對shell的好處而言,它是最小的,因爲你可以用FileUtils做什麼,你也可以用shell來做。

    1
    • 作品不產生新的進程發出命令(因此它消耗更少的資源)
    +0

    你必須執行ruby解釋器來運行ruby腳本。這是一個過程。不是嗎? – ghostdog74 2010-09-12 08:29:25

    +0

    啊,我想我誤解了這個問題。我以爲他在問使用Ruby的shell命令。 – 2010-09-12 10:44:54

    相關問題