2011-12-28 29 views

Trả lời

92
File.expand_path("..", Dir.pwd) 
+12

@Niklas: Hoặc 'File.expand_path ('..')', [default 'dir_string'] (http: // ruby-doc. org/core-1.9.3/File.html # method-c-expand_path) là ''.''. –

+0

@muistooshort: rất hay biết :) –

+0

@Niklas: Tôi vừa học được nó quá, vì vậy chúng tôi thậm chí còn :) –

11

lẽ là giải pháp đơn giản nhất:

puts File.expand_path('../.') 
+10

Tại sao không chỉ 'File.expand_path ('..')'? –

+0

@muistooshort thực sự thú vị, và chắc chắn hữu ích để biết, cảm ơn;) – maprihoda

+0

Câu trả lời của bạn piqued sự tò mò của tôi để kiểm tra spec cho 'File.expand_path' vì vậy cảm ơn cho điều đó. –

4

Tôi nghĩ rằng một giải pháp đơn giản hơn thậm chí là sử dụng File.dirname:

2.3.0 :005 > Dir.pwd 
=> "/Users/kbennett/temp" 
2.3.0 :006 > File.dirname(Dir.pwd) 
=> "/Users/kbennett" 
2.3.0 :007 > File.basename(Dir.pwd) 
=> "temp" 

File.basename trả về thành phần của con đường mà File.dirname không.

Điều này, tất nhiên, chỉ hoạt động nếu tệp filespec tuyệt đối và không tương đối. Để chắc chắn làm cho nó tuyệt đối, người ta có thể làm điều này:

2.3.0 :008 > File.expand_path('.') 
=> "/Users/kbennett/temp" 
2.3.0 :009 > File.dirname(File.expand_path('.')) 
=> "/Users/kbennett" 
Các vấn đề liên quan