1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #23025 from yahonda/shorten_internal_metadata_table_name_less_than_30_byte

Shorten ActiveRecord::InternalMetadata.table_name to ar_internal_metadata
This commit is contained in:
Sean Griffin 2016-02-01 11:23:49 -07:00
commit 4f2bce959b
6 changed files with 42 additions and 14 deletions

View file

@ -14,6 +14,10 @@ module ActiveRecord
"#{table_name_prefix}#{ActiveRecord::Base.internal_metadata_table_name}#{table_name_suffix}"
end
def original_table_name
"#{table_name_prefix}active_record_internal_metadatas#{table_name_suffix}"
end
def []=(key, value)
first_or_initialize(key: key).update_attributes!(value: value)
end
@ -26,8 +30,17 @@ module ActiveRecord
ActiveSupport::Deprecation.silence { connection.table_exists?(table_name) }
end
def original_table_exists?
# This method will be removed in Rails 5.1
# Since it is only necessary when `active_record_internal_metadatas` could exist
ActiveSupport::Deprecation.silence { connection.table_exists?(original_table_name) }
end
# Creates an internal metadata table with columns +key+ and +value+
def create_table
if original_table_exists?
connection.rename_table(original_table_name, table_name)
end
unless table_exists?
key_options = connection.internal_string_options_for_primary_key

View file

@ -44,9 +44,9 @@ module ActiveRecord
##
# :singleton-method:
# Accessor for the name of the internal metadata table. By default, the value is "active_record_internal_metadatas"
# Accessor for the name of the internal metadata table. By default, the value is "ar_internal_metadata"
class_attribute :internal_metadata_table_name, instance_accessor: false
self.internal_metadata_table_name = "active_record_internal_metadatas"
self.internal_metadata_table_name = "ar_internal_metadata"
##
# :singleton-method:

View file

@ -357,14 +357,14 @@ class MigrationTest < ActiveRecord::TestCase
def test_internal_metadata_table_name
original_internal_metadata_table_name = ActiveRecord::Base.internal_metadata_table_name
assert_equal "active_record_internal_metadatas", ActiveRecord::InternalMetadata.table_name
ActiveRecord::Base.table_name_prefix = "prefix_"
ActiveRecord::Base.table_name_suffix = "_suffix"
assert_equal "ar_internal_metadata", ActiveRecord::InternalMetadata.table_name
ActiveRecord::Base.table_name_prefix = "p_"
ActiveRecord::Base.table_name_suffix = "_s"
Reminder.reset_table_name
assert_equal "prefix_active_record_internal_metadatas_suffix", ActiveRecord::InternalMetadata.table_name
assert_equal "p_ar_internal_metadata_s", ActiveRecord::InternalMetadata.table_name
ActiveRecord::Base.internal_metadata_table_name = "changed"
Reminder.reset_table_name
assert_equal "prefix_changed_suffix", ActiveRecord::InternalMetadata.table_name
assert_equal "p_changed_s", ActiveRecord::InternalMetadata.table_name
ActiveRecord::Base.table_name_prefix = ""
ActiveRecord::Base.table_name_suffix = ""
Reminder.reset_table_name
@ -426,6 +426,21 @@ class MigrationTest < ActiveRecord::TestCase
ENV["RACK_ENV"] = original_rack_env
end
def test_rename_internal_metadata_table
original_internal_metadata_table_name = ActiveRecord::Base.internal_metadata_table_name
ActiveRecord::Base.internal_metadata_table_name = "active_record_internal_metadatas"
Reminder.reset_table_name
ActiveRecord::Base.internal_metadata_table_name = original_internal_metadata_table_name
Reminder.reset_table_name
assert_equal "ar_internal_metadata", ActiveRecord::InternalMetadata.table_name
ensure
ActiveRecord::Base.internal_metadata_table_name = original_internal_metadata_table_name
Reminder.reset_table_name
end
def test_proper_table_name_on_migration
reminder_class = new_isolated_reminder_class
migration = ActiveRecord::Migration.new

View file

@ -38,7 +38,7 @@ class SchemaDumperTest < ActiveRecord::TestCase
assert_match %r{create_table "accounts"}, output
assert_match %r{create_table "authors"}, output
assert_no_match %r{create_table "schema_migrations"}, output
assert_no_match %r{create_table "active_record_internal_metadatas"}, output
assert_no_match %r{create_table "ar_internal_metadata"}, output
end
def test_schema_dump_uses_force_cascade_on_create_table
@ -159,7 +159,7 @@ class SchemaDumperTest < ActiveRecord::TestCase
assert_no_match %r{create_table "accounts"}, output
assert_match %r{create_table "authors"}, output
assert_no_match %r{create_table "schema_migrations"}, output
assert_no_match %r{create_table "active_record_internal_metadatas"}, output
assert_no_match %r{create_table "ar_internal_metadata"}, output
end
def test_schema_dump_with_regexp_ignored_table
@ -167,7 +167,7 @@ class SchemaDumperTest < ActiveRecord::TestCase
assert_no_match %r{create_table "accounts"}, output
assert_match %r{create_table "authors"}, output
assert_no_match %r{create_table "schema_migrations"}, output
assert_no_match %r{create_table "active_record_internal_metadatas"}, output
assert_no_match %r{create_table "ar_internal_metadata"}, output
end
def test_schema_dumps_index_columns_in_right_order
@ -345,7 +345,7 @@ class SchemaDumperTest < ActiveRecord::TestCase
assert_no_match %r{create_table "foo_.+_bar"}, output
assert_no_match %r{add_index "foo_.+_bar"}, output
assert_no_match %r{create_table "schema_migrations"}, output
assert_no_match %r{create_table "active_record_internal_metadatas"}, output
assert_no_match %r{create_table "ar_internal_metadata"}, output
if ActiveRecord::Base.connection.supports_foreign_keys?
assert_no_match %r{add_foreign_key "foo_.+_bar"}, output

View file

@ -28,7 +28,7 @@ module ApplicationTests
assert_not File.exist?("tmp/restart.txt")
`bin/setup 2>&1`
assert_equal 0, File.size("log/test.log")
assert_equal '["articles", "schema_migrations", "active_record_internal_metadatas"]', list_tables.call
assert_equal '["articles", "schema_migrations", "ar_internal_metadata"]', list_tables.call
assert File.exist?("tmp/restart.txt")
end
end

View file

@ -222,14 +222,14 @@ module ApplicationTests
assert_equal '["posts"]', list_tables[]
`bin/rails db:schema:load`
assert_equal '["posts", "comments", "schema_migrations", "active_record_internal_metadatas"]', list_tables[]
assert_equal '["posts", "comments", "schema_migrations", "ar_internal_metadata"]', list_tables[]
app_file 'db/structure.sql', <<-SQL
CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255));
SQL
`bin/rails db:structure:load`
assert_equal '["posts", "comments", "schema_migrations", "active_record_internal_metadatas", "users"]', list_tables[]
assert_equal '["posts", "comments", "schema_migrations", "ar_internal_metadata", "users"]', list_tables[]
end
end