Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Использование конфигурационных файлов к программе


Автор: Akeem 1.8.2006, 16:29
Такой вопрос: Как правильно использовать конфигурационный файл к программе написаной мной?

Я делаю приблизительно так
файл configure.rb
Код

class Configure
  @@HOST  =  
  @@FTP_LIST_METADATA = "e:/ftp_list_metadata.txt"
  @@FTP_LIST_DATA = "e:/ftp_list_data.txt"
  @@PASSIVE_MODE = true
  @@TIME_OUT = 90
  @@DEBUGE_MODE = true
end #configuration class


А потом в моей программе пишу
Код

require 'configure'

........

Net:FTP::new(Configure::HOST)

......



но когда запускаю моя программа ругается что не может найти метода HOST в классе Configure

Что я не так делаю??

Автор: skalex 1.8.2006, 16:33
Может быть проще YAML использовать для конфигурации?

Автор: Akeem 1.8.2006, 16:44
YAML  -- эт чё такое ??

Добавлено @ 16:45 
Мне просто сказали создать конфиг файл и вынести туда параметры из проги. чтобы их не править прямо в коде.

Автор: Akeem 1.8.2006, 18:00
Всё уже не надо. Я разобрался. Нужно было писать вот так:
файл config.rb
Код

module Config

    HOST  =  'e0dps01u.ecs.nasa.gov'
    FTP_LIST_METADATA = "H:/ftp_list_metadata.txt"
    FTP_LIST_DATA = "H:/ftp_list_data.txt"
    PASSIVE_MODE = true
    TIME_OUT = 30
    DEBUGE_MODE = true

end #configuration class



файл программы
Код

require 'config'

.......
Net:FTP::new(Config::HOST)

..........


Правда остался глюк: не понятно почему он не принимает имя фала для создания или редактирования.

Автор: skalex 1.8.2006, 19:10
Цитата
Мне просто сказали создать конфиг файл и вынести туда параметры из проги. чтобы их не править прямо в коде.

Тем не менее ты все равно оставил их в коде (в модуле Config).  smile 

Все конечно зависит от задачи, но я стараюсь выносить любые конфигурационные данные из исходных кодов. Для этой задачи можно применить YAML-файлы, тем более в Ruby есть инструмент, чтобы  с ними работать.

Вот решение твоей задачи:

Файл config.yml
Код
HOST: 'e0dps01u.ecs.nasa.gov'
FTP_LIST_METADATA: 'H:/ftp_list_metadata.txt'
FTP_LIST_DATA: 'H:/ftp_list_data.txt'
PASSIVE_MODE: true
TIME_OUT: 30
DEBUGE_MODE: true 


Файл app.rb
Код
require 'yaml'

# ...

config = YAML::load_file('config.yml')

# ...

Net:FTP::new(config['HOST']) 


Документация:
http://www.yaml.org/
http://yaml4r.sourceforge.net/
http://yaml4r.sourceforge.net/cookbook/

Автор: Akeem 1.8.2006, 20:16
Спасибо За информацию.

Добавлено @ 20:18 
Я попробую и так и так зделать. Мож им понравится через YAML файлы.

Конечно если у них будет модуль YAML

Автор: Cr@$h 24.8.2006, 14:00

M
Cr@$h
skalex ++ за помошь новичку (<100).

Автор: Akeem 31.8.2006, 19:57
Я всё таки не дошел до yaml. Ну да и ладно как нить пожже когда надо будет. 

Хотя вопрос: где редактировать файл *.yaml ? 

И вдогонку там используется именно *.yaml файл а не *.yml . Или всё же можно и так?

Автор: skalex 1.9.2006, 09:06
Цитата(Akeem @  31.8.2006,  20:57 Найти цитируемый пост)
где редактировать файл *.yaml ?


Что значит где? Поясни ...

Автор: Akeem 1.9.2006, 18:08
НУ как создавть этот файл и каким редакторо его редактировать. Я не думаю что подойдет простой Блокнот или WordPad

Автор: skalex 5.9.2006, 08:51
Akeem, бери любой редактор кода. Например, см. мою подпись.  smile 

Автор: Akeem 5.9.2006, 18:04
skalex
 smile  Как нибуть в другой раз.

Автор: Cr@$h 5.9.2006, 19:50
Цитата(Akeem @  5.9.2006,  19:04 Найти цитируемый пост)
Как нибуть в другой раз. 

Спросил, ответили, а что ты ожидал услышать  smile 

Автор: skalex 6.9.2006, 08:29
Akeem, зря!
Кстати есть соотв. топик в этом форуме: http://forum.vingrad.ru/index.php?showtopic=92312

Автор: Akeem 8.9.2006, 17:51
skalex
Я лучше соглашусь с Rubinovich. Лучше редактора кода на Руби чем SciTE я пока не встречал. 

И редактор кода для С (под винду) Это Вижуал Студио. 

Автор: skalex 9.9.2006, 09:25
Akeem, не будем устраивать здесь религиозных войн ... Редактор каждый выбирает себе сам.

Автор: Akeem 16.9.2006, 21:14
skalex
Не будем!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)