2011-06-09 65 views
1

我需要在Windows上創建安全文件名(支持外文字符)。一些開發環境是Mac和其他Windows。我們的自動化測試在Windows機器上運行,並且應用程序安裝在Windows機器上。文件系統對合法文件名(特別是字符如<,>,以及NTFS上的路徑分隔符是非法的)施加了他們自己的規則如何確定Ruby中的路徑或文件的文件系統?

我想寫一些實際測試文件系統的測試, m試圖不嘲笑測試,因爲那樣我就沒有在真正的系統中測試任何東西,只是驗證代碼處理嘲諷的異常。測試需要至少在Mac上運行(沒關係,如果他們只是在Mac上跳過測試但我也想知道測試運行在哪種類型的文件系統上NTFS不同於FAT32注:我沒有要求安全文件名方法的實現,我已經有了,我在問如果在Ruby中有任何方式來確定我當前正在使用哪個文件系統,則可以進行測試。多個搜索以及File,FileUtils,Dir和甚至ENV還沒有出現任何東西。

+0

我知道File.join將讓你的環境分離器,但它不會出現驗證輸入:> File.join( 「ASDF」, 「FDAS」, 「&^ * SDFIU」 ,「asdf.jpg」) =>「asdf/fdas /&^ * SDFIU/asdf.jpg」 – eggie5 2011-06-09 18:11:49

回答

1

您可以嘗試sys-filesystem寶石:

這是獲得對 Unix的阿拉 '東風' filesytem信息的界面,而且還適用於Windows。

irb(main):001:0> require 'sys/filesystem' 
=> true 
irb(main):006:0> Sys::Filesystem.stat("D:\\").base_type 
=> "NTFS" 
+0

感謝您的信息,但似乎沒有爲我工作。 Mac: 'ruby-1.9.2-p0> Sys :: Filesystem.stat('。')。base_type => nil ruby​​-1.9.2-p0> Sys :: Filesystem.stat('/')。 base_type =>無' 我在Win7旗艦版上的「創建原生擴展」時遇到編譯器錯誤。 – 2011-06-09 19:37:14

+1

對不起,沒有任何mac。關於Windows,你有沒有安裝http://rubyinstaller.org/add-ons/devkit/? – 2011-06-09 19:57:16

+0

是的,我剛剛通過安裝ruby安裝程序devkit,它似乎安裝正確,但仍然編譯器錯誤安裝寶石時。反正它可能是一個爭論點,因爲我們可能不會爲所有窗口測試機器做這種安裝過程。不管怎麼說,多謝拉。 – 2011-06-09 20:08:15

相關問題