diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index c66cada07a92907ae137c84da93e3b1b39be4c48..a958600446cb6d29ae0825aa3b32ed94fb94ef16 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -367,9 +367,11 @@ def foreign_keys(table_name) end def insert_fixtures(rows, table_name) - rows.each do |row| - insert_fixture(row, table_name) - end + ActiveSupport::Deprecation.warn(<<-MSG.squish) + `insert_fixtures` is deprecated and will be removed in the next version of Rails. + Consider using `insert_fixtures_set` for performance improvement. + MSG + insert_fixtures_set(table_name => rows) end def insert_fixtures_set(fixture_set, tables_to_delete = []) diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index d6b22e0a793b2720741b73ade54315d08cd2b907..baa5e5df34d84080b25b47fa39bb498b96c773ce 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -211,16 +211,30 @@ def test_no_auto_value_on_zero_is_disabled subscription = ActiveSupport::Notifications.subscribe("sql.active_record", subscriber) assert_nothing_raised do - ActiveRecord::Base.connection.insert_fixtures(fixtures, "aircraft") + ActiveRecord::Base.connection.insert_fixtures_set("aircraft" => fixtures) end - expected_sql = "INSERT INTO `aircraft` (`id`, `name`, `wheels_count`) VALUES (DEFAULT, 'first', 2), (DEFAULT, 'second', 3)" + expected_sql = "INSERT INTO `aircraft` (`id`, `name`, `wheels_count`) VALUES (DEFAULT, 'first', 2), (DEFAULT, 'second', 3);\n" assert_equal expected_sql, subscriber.events.first ensure ActiveSupport::Notifications.unsubscribe(subscription) end end + def test_deprecated_insert_fixtures + fixtures = [ + { "name" => "first", "wheels_count" => 2 }, + { "name" => "second", "wheels_count" => 3 } + ] + conn = ActiveRecord::Base.connection + conn.delete("DELETE FROM aircraft") + assert_deprecated do + conn.insert_fixtures(fixtures, "aircraft") + end + result = conn.select_all("SELECT name, wheels_count FROM aircraft ORDER BY id") + assert_equal fixtures, result.to_a + end + def test_broken_yaml_exception badyaml = Tempfile.new ["foo", ".yml"] badyaml.write "a: : "