Sha256: b36bc17c10db4f2fe83fadd09d0281a37243c3b1d957dacd63da4c2dd45adcde

Contents?: true

Size: 1022 Bytes

Versions: 1

Compression:

Stored size: 1022 Bytes

Contents

module FixedModel
  class Loader
    def initialize(model_name)
      @model_name = model_name
    end

    def load
      data = {}
      files.each do |file|
        merge_data(data, YAML.load(File.read(file)))
      end
      data.values
    end

    def merge_data(row, new_row)
      new_row.each do |key, value|
        if row[key].is_a?(Hash) && value.is_a?(Hash)
          merge_data(row[key], value)
        elsif row[key].is_a?(Array) && value.is_a?(Array)
          row[key].concat(value)
        else
          row[key] = value
        end
      end
    end

    def files
      plural_model_name = ActiveModel::Naming.plural(@model_name)
      files = []
      FixedModel.file_paths.each do |file_path|
        files << File.join(Rails.root, file_path, "#{plural_model_name}.yml")
        if FixedModel.use_environment_paths
          file = File.join(Rails.root, file_path, 'test',"#{plural_model_name}.yml")
          files << file if File.exists?(file)
        end
      end
      files
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fixed_model-0.0.1 lib/fixed_model/loader.rb