method

read_fixture_files

Importance_0
v1.1.6 - Show latest stable - 0 notes - Class: Fixtures
read_fixture_files() private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/fixtures.rb, line 294
    def read_fixture_files
      if File.file?(yaml_file_path)
        # YAML fixtures
        begin
          yaml_string = ""
          Dir["#{@fixture_path}/**/*.yml"].select {|f| test(?f,f) }.each do |subfixture_path|
            yaml_string << IO.read(subfixture_path)
          end
          yaml_string << IO.read(yaml_file_path)

          if yaml = YAML::load(erb_render(yaml_string))
            yaml = yaml.value if yaml.respond_to?(:type_id) and yaml.respond_to?(:value)
            yaml.each do |name, data|
              self[name] = Fixture.new(data, @class_name)
            end
          end
        rescue Exception=>boom
          raise Fixture::FormatError, "a YAML error occured parsing #{yaml_file_path}. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html\nThe exact error was:\n  #{boom.class}: #{boom}"
        end
      elsif File.file?(csv_file_path)
        # CSV fixtures
        reader = CSV::Reader.create(erb_render(IO.read(csv_file_path)))
        header = reader.shift
        i = 0
        reader.each do |row|
          data = {}
          row.each_with_index { |cell, j| data[header[j].to_s.strip] = cell.to_s.strip }
          self["#{Inflector::underscore(@class_name)}_#{i+=1}"]= Fixture.new(data, @class_name)
        end
      elsif File.file?(deprecated_yaml_file_path)
        raise Fixture::FormatError, ".yml extension required: rename #{deprecated_yaml_file_path} to #{yaml_file_path}"
      else
        # Standard fixtures
        Dir.entries(@fixture_path).each do |file|
          path = File.join(@fixture_path, file)
          if File.file?(path) and file !~ @file_filter
            self[file] = Fixture.new(path, @class_name)
          end
        end
      end
    end
Register or log in to add new notes.