method
read_fixture_files
read_fixture_files()
private
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