Почему я не могу использовать «mkdir» с объектом Pathname? - PullRequest
2 голосов
/ 20 января 2010

Я недавно пробовал библиотеку Pathname, и я хочу использовать 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

Может кто-нибудь объяснить, что я здесь делаю не так.

Ответы [ 2 ]

7 голосов
/ 20 января 2010

Вам необходимо указать каталог, который вы хотите создать, с помощью Pathname, а затем вызвать mkdir.

Это должно работать:

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

В качестве аргумента вы можете указать разрешения для нового каталога.

2 голосов
/ 20 января 2010

Из интереса причина, по которой вы получаете «не удается преобразовать строку в целое число», заключается в том, что Pathname.mkdir на самом деле является оберткой вокруг Dir.mkdir следующим образом:

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

Путь, представленный объектом Pathname, передается в качестве первого параметра в Dir.mkdir, за которым следуют любые параметры, передаваемые в Pathname.mkdir. Второй параметр для Dir.mkdir - это числовые права доступа, которые вы хотели бы иметь для созданного каталога. Следовательно, в вашем примере "123adam" передается Dir.mkdir, где ожидается число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...