2009-02-28 10 views
134

L'ambiente di sviluppo di My Rails è basato su Windows e il mio ambiente di produzione è basato su Linux.Come fare un nome di percorso sicuro in ruby?

È possibile che VirtualHost venga utilizzato. Supponiamo che un nome file debba essere referenziato nella cartella /public con File.open('/tmp/abc.txt', 'r').

-ma in Windows dovrebbe essere C:\tmp\abc.txt. Come posso unire un percorso corretto per gestire i due diversi ambienti?

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

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

E quando prefix_tmp_path = "C:\tmp\" ottengo C:\tmp\/1.txt

Qual è il modo corretto di gestire entrambi i casi?

risposta

258

mi consiglia di utilizzare File.join

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

Una cosa da notare. Ruby usa un "/" per separare i file su tutte le piattaforme, incluso Windows, quindi non è necessario utilizzare un codice diverso per unire le cose su piattaforme diverse. "C: /tmp/1.text" dovrebbe funzionare correttamente.

File.join() è il tuo amico per unire i percorsi insieme.

prefix_tmp_path = 'C:/tmp' 
filename = "#{rand(10)}.txt" 
fullname = File.join(prefix_tmp_path, filename) # e.g., C:/tmp/3.txt 
Problemi correlati