Как лучше работать с конфигурациями в Ruby?

Допустим, у нас есть некая структура конфигурации (взята из YAML, JSON, XML или просто в виде Hash):

configuration = {
  gmail: {
    username: 'example@gmail.com',
    password: 'pa$$word',
    host: 'imap.gmail.com',
    ssl: true,
    port: 993
  },
  ftp: {
    username: 'example@gmail.com',
    password: 'pa$$word',
    host: 'imap.gmail.com',
    ssl: true,
    port: 42
  }
}


Далее, на основе этой структуры мы достаём из неё данные:

mail = Mail.new host: configuration[:gmail][:host], port: configuration[:gmail][:port], username: configuration[:gmail][:username], password: configuration[:gmail][:password], ssl: configuration[:gmail][:ssl]
ftp = FTP.new host: configuration[:ftp][:host], port: configuration[:ftp][:port], username: configuration[:ftp][:username], password: configuration[:ftp][:password], ssl: configuration[:ftp][:ssl]


Всё работает, но сам код получается плохочитаемым.
Т. е. он, конечно, понятен, но слишком много «сухого» текста, вместо привычного, для языка программирования, кода.

Поделитесь Best Practice, как правильно делать и использовать конфигурации в Ruby.
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 2
nbekseitov
@nbekseitov
Ruby developer
Можно сделать проще
mail = Mail.new configuration[:gmail]
ftp = FTP.new configuration[:ftp]
Ответ написан
@kliss
Если не нравится доступ через скобочки, то можно сделать так:

configuration = OpenStruct.new(configuration, object_class: OpenStruct)

configuration.gmail.host
configuration.ftp.port
# etc.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы