2011-12-28 125 views

回答

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

@Niklas:或'File.expand_path( '..')',[默认'dir_string'(HTTP://红宝石文档。 org/core-1.9.3/File.html#method-c-expand_path)是''。''。 – 2011-12-28 22:07:24

+0

@ muistooshort:很高兴知道:) – 2011-12-28 22:21:03

+0

@Niklas:我刚刚也学到了,所以我们甚至:) – 2011-12-28 22:37:02

11

也许最简单的解决方案:

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

为什么不只是'File.expand_path('..')'? – 2011-12-28 22:07:36

+0

@ muistooshort的确很有意思,并且明确地知道,谢谢;) – maprihoda 2011-12-29 08:43:17

+0

您的回答引起了我的好奇心,以检查File.expand_path的规范,所以非常感谢。 – 2011-12-29 09:29:51

4

我认为,一个更简单的解决方案是使用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返回的路径是File.dirname不组件。

这当然只在filespec是绝对的而不是相对的时候才起作用。可以肯定,使其绝对的可以这样做:

2.3.0 :008 > File.expand_path('.') 
=> "/Users/kbennett/temp" 
2.3.0 :009 > File.dirname(File.expand_path('.')) 
=> "/Users/kbennett"