class ActiveRecord::FixtureSet::File

:nodoc:

def self.open(file)

when the block finishes.
is called with the filehandle and the filehandle is automatically closed
Open a fixture file named +file+. When called with a block, the block
#
def self.open(file)
  x = new file
  block_given? ? yield(x) : x
end

def config_row

def config_row
  @config_row ||= begin
    row = raw_rows.find { |fixture_name, _| fixture_name == "_fixture" }
    if row
      validate_config_row(row.last)
    else
      { 'model_class': nil, 'ignore': nil }
    end
  end
end

def each(&block)

def each(&block)
  rows.each(&block)
end

def ignored_fixtures

def ignored_fixtures
  config_row["ignore"]
end

def initialize(file)

def initialize(file)
  @file = file
end

def model_class

def model_class
  config_row["model_class"]
end

def raw_rows

def raw_rows
  @raw_rows ||= begin
    data = ActiveSupport::ConfigurationFile.parse(@file, context:
      ActiveRecord::FixtureSet::RenderContext.create_subclass.new.get_binding)
    data ? validate(data).to_a : []
  rescue RuntimeError => error
    raise Fixture::FormatError, error.message
  end
end

def rows

def rows
  @rows ||= raw_rows.reject { |fixture_name, _| fixture_name == "_fixture" }
end

def validate(data)

Validate our unmarshalled data.
def validate(data)
  unless Hash === data || YAML::Omap === data
    raise Fixture::FormatError, "fixture is not a hash: #{@file}"
  end
  invalid = data.reject { |_, row| Hash === row }
  if invalid.any?
    raise Fixture::FormatError, "fixture key is not a hash: #{@file}, keys: #{invalid.keys.inspect}"
  end
  data
end

def validate_config_row(data)

def validate_config_row(data)
  unless Hash === data
    raise Fixture::FormatError, "Invalid `_fixture` section: `_fixture` must be a hash: #{@file}"
  end
  begin
    data.assert_valid_keys("model_class", "ignore")
  rescue ArgumentError => error
    raise Fixture::FormatError, "Invalid `_fixture` section: #{error.message}: #{@file}"
  end
  data
end