Class: Jekyll::Unirate::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll/unirate/config.rb

Overview

Resolves plugin configuration from ‘_config.yml` (the `unirate:` key) layered over environment variables and sensible defaults.

unirate:
  base: USD                 # currency the snapshot is fetched against
  default_currency: USD     # display currency for one-arg helpers
  base_url: https://api.unirateapi.com
  timeout: 30
  # api_key: prefer the UNIRATE_API_KEY env var over committing a key

The API key resolves from (in order): the UNIRATE_API_KEY env var, then ‘unirate.api_key` in _config.yml. Keeping it in the environment avoids checking a secret into the site repo.

Constant Summary collapse

DEFAULTS =
{
  "base" => "USD",
  "default_currency" => "USD",
  "base_url" => Client::DEFAULT_BASE_URL,
  "timeout" => Client::DEFAULT_TIMEOUT
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(site_config = {}) ⇒ Config

Returns a new instance of Config.



26
27
28
29
# File 'lib/jekyll/unirate/config.rb', line 26

def initialize(site_config = {})
  raw = site_config && site_config["unirate"]
  @settings = DEFAULTS.merge(stringify(raw))
end

Instance Method Details

#api_keyObject



31
32
33
34
35
36
# File 'lib/jekyll/unirate/config.rb', line 31

def api_key
  env = ENV.fetch("UNIRATE_API_KEY", nil)
  return env unless env.nil? || env.empty?

  @settings["api_key"]
end

#baseObject



38
# File 'lib/jekyll/unirate/config.rb', line 38

def base = @settings["base"].to_s.upcase

#base_urlObject



40
# File 'lib/jekyll/unirate/config.rb', line 40

def base_url = @settings["base_url"]

#default_currencyObject



39
# File 'lib/jekyll/unirate/config.rb', line 39

def default_currency = @settings["default_currency"].to_s.upcase

#timeoutObject



41
# File 'lib/jekyll/unirate/config.rb', line 41

def timeout = @settings["timeout"]