Извлечение и коверкая параметра файл конфигурации MySQL


Есть ли лучший способ сделать это?

File.open( "/etc/my.cnf" ) do |f|
  f.grep( /^testdir/ ) do |line|
    test1 = line.chop.gsub(/ /,"")
    test2 = test1.sub(/.*=/, "")
    RETURN_PATH = "#{test2}/test_ups"
  end
end


620
2
задан 6 апреля 2011 в 02:04 Источник Поделиться
Комментарии
3 ответа

Помимо не используя константы для RETURN_PATH (что является неправильным и приведет к Руби, чтобы предупредить вас), представляется целесообразным достаточно для меня.

3
ответ дан 6 апреля 2011 в 06:04 Источник Поделиться

Вот мой рефакторинга, я объясню ниже, что я сделал:

path = File.readlines("/etc/my.cnf").find { |line| line =~ /^testdir/ }.chomp.gsub(/( )|(.*=)/, '')
@return_path = File.join(path, 'test_ups') # >> "/tmp/test_ups"

Во-первых, вы можете использовать файл.readlines возвращает массив строк из файла, мы затем использовать регулярное выражение, чтобы соответствовать строка, начинающаяся с testdir была, мы потом удалить \R\n с сер - заметил, что я изменилась ЧОП для гусеничка , потому что это безопаснее (см. Рубин#строка), а затем очистить его с помощью одного регулярного выражения и gsub. Наконец мы возвращаем ваш путь в переменной экземпляра @return_path , а не постоянная.

Я сделал несколько предположений, когда пишу это, включая мое.CNF файл стандартный файл MySQL конф - возможно, вам придется адаптировать этот костюм.

3
ответ дан 10 апреля 2011 в 04:04 Источник Поделиться

Я не уверен, что семантика кода, но в предположении, что вы не munging вещи, которые выглядят как пути к файлам, я рекомендую вам файл.базовое имя метода (и друзей), которые могли бы выразить более четко ваши намерения. Примечание: там нет необходимости, чтобы на самом деле получить доступ к файлу, чтобы получить базовое имя. Это простой Строковой операции.

1
ответ дан 29 апреля 2011 в 12:04 Источник Поделиться