2012-04-26 3 views
0

Итак, у меня есть следующий небольшой скрипт, чтобы сделать установку файла для организации отчетов, которые мы получаем.Использование Ruby для автоматизации большой системы каталогов

#This script is to create a file structure for our survey data 

require 'fileutils' 

f = File.open('CustomerList.txt') or die "Unable to open file..." 
a = f.readlines 
x = 0 

while a[x] != nil 

    Customer = a[x] 
    FileUtils.mkdir_p(Customer + "/foo/bar/orders") 
    FileUtils.mkdir_p(Customer + "/foo/bar/employees") 
    FileUtils.mkdir_p(Customer + "/foo/bar/comments") 
    x += 1 

end 

Все, кажется, работает до while, но я получаю:

'mkdir': Invalid argument - Cust001_JohnJacobSmith(JJS) (Errno::EINVAL) 

Какой бы первая линия от CustomerList.txt. Нужно ли что-то делать, чтобы запись массива считалась строкой? Я несовпадаю с типами переменных или чем-то еще?

Заранее спасибо.

+0

Почему Клиент постоянный? – inger

+0

"Cust001_JohnJacobSmith (JJS)" первая строка? – inger

+0

Да, это будет первая строка из файла. – JHStarner

ответ

1

Следующие работал для меня:

IO.foreach('CustomerList.txt') do |customer| 
    customer.chomp! 
    ["orders", "employees", "comments"].each do |dir| 
    FileUtils.mkdir_p("#{customer}/foo/bar/#{dir}") 
    end 
end 

с данными, как так:

$ cat CustomerList.txt 
Cust001_JohnJacobSmith(JJS) 
Cust003_JohnJacobSmith(JJS) 
Cust002_JohnJacobSmith(JJS) 

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

Использование блоков при открытии файл или итерацию через массивы, таким образом вам не нужно беспокоиться о закрытии файла или доступе к массиву напрямую.

Как отметил @inger, местные вары начинаются с нижнего регистра, клиента.

Если вы хотите, чтобы значение переменной в строке usign # {} было более рубино, чем конкатенация с +.

Также обратите внимание, что мы сняли заднюю черту с использованием chomp! (который изменяет var на месте, отмеченный трейлингом на имя метода)

+0

Работал отлично. Спасибо. Похоже, мне нужно будет немного почитать Руби. – JHStarner

Смежные вопросы