我最近一直在试用Pathname lib,我想做的一件事是使用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
任何人都可以解释我在这里做错了什么。
答案 0 :(得分:7)
您需要使用Pathname指定要创建的目录,然后调用mkdir
。
这应该有效:
p = Pathname.new('/tmp/123adam')
p.mkdir
您可以提供的参数是新目录的权限。
答案 1 :(得分:2)
出于兴趣,你得到“无法将字符串转换为整数”的原因是因为Pathname.mkdir
实际上是Dir.mkdir
的包装,如下所示:
def mkdir(*args) Dir.mkdir(@path, *args) end
Pathname
对象表示的路径作为第一个参数传递给Dir.mkdir
,然后传递给Pathname.mkdir
的任何参数。 Dir.mkdir
的第二个参数是您希望创建目录的数字访问权限。因此,在您的示例中,"123adam"
传递给Dir.mkdir
,其中包含一个数字。