Skip to content

Latest commit

 

History

History
58 lines (47 loc) · 1.18 KB

004-configus.md

File metadata and controls

58 lines (47 loc) · 1.18 KB

Цель

Доделать гем.

Реализовать:

  • вложенные ключи
  • наследование окружений
Configus.build :development do
  env :production do
    email do
      server 'some-server'
      port 1234
      login 'login'
      password 'pass'
    end
    
    key1 do
      key2 do
        key3 do
          key4 'value'
        end
      end
    end
  end

  # именованый параметр parent
  env :development, parent: :production do
    email do
      server 'test-server' # переопределяем ключ
    end
  end
end

Configus.config.email.server #=> 'test-server'
Configus.config.email.port #=> port
Configus.config.email.to_h #=> { server: 'test-server', port: 1234, login: 'login', password: 'pass' }

Configus.config.key1.key2.key3.key4 #=> 'value'
Configus.config.key1.key2.key3.to_h #=> { key4: 'value' }

Полезности

Рекурсивное объединение хэшей

# метод модифицирует target
def deep_merge(target, source)
  source.each do |k, v|
    tv = target[k]
    target[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? deep_merge(tv, v) : v
  end
  target
end