2
在某些平臺(Windows)上,Ruby不支持File.symlink,因此引發了NotImplemented異常。我有一些可以使用或不使用符號鏈接的代碼,所以它需要適應。如何判斷是否支持File.symlink
我拿出來發現符號鏈接是否被支持的唯一方法是嘗試創建一個:
def symlink_supported?
Dir.mktmpdir do |dir|
target_path = File.join(dir, 'target')
symlink_path = File.join(dir, 'symlink')
FileUtils.touch target_path
begin
FileUtils.ln_s target_path, symlink_path
true
rescue NotImplementedError
false
end
end
end
這是緩慢的(大量的文件系統操作的!),似乎笨重。緩慢可以通過memoization來處理,但這只是給已經笨重的方法增加了更多機器。
是否有更快或更優雅的方式來發現是否支持File.symlink?
更快捷_and_更優雅。謝謝! –