2009-02-28 16 views
134

Rails geliştirme ortamım Windows tabanlı ve üretim ortamım Linux tabanlı.Ruby'de güvenli birleşim yolu nasıl yapılır?

VirtualHost'un kullanılması mümkündür. Bir dosya adının, File.open('/tmp/abc.txt', 'r') ile /public klasöründe başvuruda bulunması gerektiğini varsayalım.

—tüm Windows'ta C:\tmp\abc.txt olmalıdır. İki farklı ortamı ele almak için doğru bir yol birleşimini nasıl yapabilirim?

prefix_tmp_path = '/tmp/' 
filename = "/#{rand(10)}.txt" 

fullname = prefix_tmp_path + filename # /tmp//1.txt <- but I don't want a double // 

Ve prefix_tmp_path = "C:\tmp\" Ben C:\tmp\/1.txt

olsun her iki davayı ele almaya doğru yolu nedir?

cevap

258

Ben nota File.join

>> File.join("path", "to", "join") 
=> "path/to/join" 
39

bir şey kullanılması önerilir. Ruby, Windows dahil olmak üzere tüm platformlarda dosya ayırıcı için bir "/" kullanır; böylece farklı platformlarda birlikte bir şeyler birleştirmek için farklı kod kullanmanıza gerek yoktur. "C: /tmp/1.text" düzgün çalışmalı.

File.join() Yolları birleştirmek için arkadaşınız.

İlgili konular