module ActiveJson::Base

Public Instance Methods

[](index) click to toggle source
# File lib/active_json/base.rb, line 16
def [](index)
  database.dig(index)
end
configure() { |config| ... } click to toggle source
# File lib/active_json/base.rb, line 3
def configure
  @config ||= OpenStruct.new(path: nil, readonly: false)
  yield(@config)
end
inspect() click to toggle source
# File lib/active_json/base.rb, line 38
def inspect
  database.to_h
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/active_json/base.rb, line 8
def method_missing(method_name, *args, &block)
  database.public_send(method_name, *args, &block)
end
reload() click to toggle source
# File lib/active_json/base.rb, line 20
def reload
  @database = nil

  database
end
respond_to_missing?(method_name, *) click to toggle source
# File lib/active_json/base.rb, line 12
def respond_to_missing?(method_name, *)
  database.respond_to?(method_name)
end
save() click to toggle source
# File lib/active_json/base.rb, line 26
def save
  raise ActiveJson::ReadOnlyDatabase if @config[:readonly]

  result = JSON.pretty_generate(database.to_h)

  File.open(@config[:path], 'w') do |file|
    file.write(result)
  end

  true
end

Private Instance Methods

database() click to toggle source
# File lib/active_json/base.rb, line 44
def database
  @database ||= JSON.parse(
    File.read(@config[:path]),
    object_class: ActiveJson::Hash,
    array_class: ActiveJson::Array
  )
end