Class: JsonSchematize::Configuration

Inherits:
Object
  • Object
show all
Includes:
ClassComposer::Generator
Defined in:
lib/json_schematize/configuration.rb

Constant Summary collapse

DEFAULT_ONE_MIN =
60 * 60
DEFAULT_ONE_HOUR =
DEFAULT_ONE_MIN * 60
DEFAULT_ONE_DAY =
DEFAULT_ONE_HOUR * 24
DEFAULT_CACHE_OPTIONS =
{
  cache_client: nil,
  cache_key: ->(val, _custom_key) { val.hash },
  cache_namespace: nil,
  cache_stochastic_bust: 0.8,
  cache_ttl: DEFAULT_ONE_DAY,
  cache_update_on_change: true,
}

Instance Method Summary collapse

Instance Method Details

#cache_clientObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/json_schematize/configuration.rb', line 60

def cache_client
  return @cache_client unless @cache_client.nil?

  begin
    Kernel.require 'active_support'
  rescue LoadError
    assign = _assign_msg_("cache_client", "ActiveSupport::Cache::MemoryStore.new", "A ActiveSupport::Cache::Store supported client")
    msg = "Default client missing. Attempted to use 'active_support/cache' but not loaded. \n#{assign}"
    raise JsonSchematize::ConfigError, msg
  end

  @cache_client = ActiveSupport::Cache::MemoryStore.new
  @cache_client
end

#cache_client=(client) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/json_schematize/configuration.rb', line 46

def cache_client=(client)
  min_required = [:read, :write, :delete_multi, :read_multi]
  min_required.each do |meth|
    next if client.methods.include?(meth)

    assign = _assign_msg_("cache_client", "_initialized_client_", "Preferably an ActiveSupport::Cache::Store supported client")
    msg = "Passed in client does not accept minimum values. #{min_required} are required methods \n#{assign}"
    raise JsonSchematize::ConfigError, msg
  end


  @cache_client = client
end

#cache_hashObject



28
29
30
31
32
33
# File 'lib/json_schematize/configuration.rb', line 28

def cache_hash
  DEFAULT_CACHE_OPTIONS.map do |key, value|
    val = public_send(key)
    [key, val]
  end.to_h
end

#cache_key=(value) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/json_schematize/configuration.rb', line 35

def cache_key=(value)
  if value.is_a? Proc
    @key = value
    return @key
  end

  assign = _assign_msg_("cache_key", "->(val, cusom_key) { val.hash }", "Default proc to assign cache key")
  msg = "cache_key must be a proc. \n#{assign}"
  raise JsonSchematize::ConfigError, msg
end