为什么我不能在路径名对象中使用“mkdir”?

问题描述:

我最近一直在试用Pathname lib,我想要做的一件事就是使用mkdir来创建一些目录。为什么我不能在路径名对象中使用“mkdir”?

我抬起头文件,它说,它包装了mkdir,但每次我尝试使用它我真的收到此错误:

irb(main):006:0> p = Pathname.new('/tmp') 
=> #<Pathname:/tmp> 
irb(main):007:0> a = p.mkdir("123adam") 
TypeError: can't convert String into Integer 
    from /usr/lib/ruby/1.8/pathname.rb:975:in `mkdir' 
    from /usr/lib/ruby/1.8/pathname.rb:975:in `mkdir' 
    from (irb):7 
    from /usr/lib/ruby/1.8/fileutils.rb:1589 

谁能解释什么我真的做错了。

您需要使用路径名指定要创建的目录,然后致电mkdir

这应该工作:

p = Pathname.new('/tmp/123adam') 
p.mkdir 

您可以提供的参数是新目录的权限。

+0

ahhhh现在我明白了!非常感谢! – robodisco 2010-01-20 12:37:16

+0

或者:'(p +“123adam”)。mkdir' – 2012-02-12 21:19:29

出于兴趣,为什么你“不能把字符串转换成整数”的原因是因为Pathname.mkdir实际上是围绕Dir.mkdir包装如下:

def mkdir(*args) Dir.mkdir(@path, *args) end 

Pathname对象表示的路径传递作为Dir.mkdir的第一个参数,然后是传递给Pathname.mkdir的任何参数。 Dir.mkdir的第二个参数是您希望创建的目录具有的数字访问权限。因此,在您的示例中,"123adam"正在传递给预计数量为Dir.mkdir的位置。