Sha256: ee625311a6a991194dd68f84d9597f4c6b304402cec442e0d59d51d233404d6c

Contents?: true

Size: 756 Bytes

Versions: 1

Compression:

Stored size: 756 Bytes

Contents

# frozen_string_literal: true

class EsExperiment::Documents
  include Singleton

  def get(key)
    factories[key.to_sym]
  end

  def set(key, value)
    factories[key.to_sym] = value
  end

  def load(config)
    self.factories = {}
    doc_path = config.documents_path
    Dir.foreach(doc_path) do |file|
      next unless valid_file?(config.schema_path, file)

      load_doc(doc_path, file)
    end
    self
  end

  private

  attr_accessor :factories

  def valid_file?(schema_path, file)
    schema = File.basename(schema_path)
    schema != file && file.include?('.json')
  end

  def load_doc(doc_path, file)
    name = File.basename(file, '.json')
    data = Oj.load(File.read(File.join(Dir.pwd, doc_path, file)))
    set(name, data)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
es_experiment-0.1.0 lib/es_experiment/documents.rb