aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2015-11-19 09:30:18 -0700
committerSean Griffin <sean@seantheprogrammer.com>2015-11-19 09:38:27 -0700
commit8246b593bff71f2cebf274c133bb8917f1e094c8 (patch)
tree0499bf109010d3c96becd121141dacbe39f5bcc5 /activerecord/test
parent7e200f2973fd063b4819bfc584ef7b4b3e66603d (diff)
downloadrails-8246b593bff71f2cebf274c133bb8917f1e094c8.tar.gz
rails-8246b593bff71f2cebf274c133bb8917f1e094c8.tar.bz2
rails-8246b593bff71f2cebf274c133bb8917f1e094c8.zip
Allow specifying the default table options for mysql adapters
It's often the case that you want to have an option that you cannot specify at the database level, but want applied to *all* tables that you create. For example, you might want to specify `ROW_FORMAT=DYNAMIC` to not have to limit text columns to length 171 for indexing when using utf8mb4. This allows an easy way to specify this in your database configuration. While this change affects both MySQL and MySQL2, the test only covers MySQL2, as the legacy mysql adapter appears to always return ASCII strings, and is tangential to what we're actually doing.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/migration_test.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb
index c3c204cf9f..58cbb80e31 100644
--- a/activerecord/test/cases/migration_test.rb
+++ b/activerecord/test/cases/migration_test.rb
@@ -1020,4 +1020,23 @@ class CopyMigrationsTest < ActiveRecord::TestCase
ActiveRecord::Base.logger = old
end
+ if current_adapter?(:Mysql2Adapter)
+ def test_default_table_options
+ config = ActiveRecord::Base.configurations['arunit'].merge(
+ encoding: 'utf8mb4',
+ default_table_options: "ENGINE=InnoDB CHARACTER SET utf8mb4",
+ )
+ ActiveRecord::Base.establish_connection(config)
+
+ ActiveRecord::Base.connection.create_table(:foos) do |t|
+ t.string :emoji
+ end
+ ActiveRecord::Base.connection.execute("INSERT INTO foos (emoji) VALUES ('💩')")
+ emoji = ActiveRecord::Base.connection.execute("SELECT emoji FROM foos").first.first
+ assert_equal "💩", emoji
+ ensure
+ ActiveRecord::Base.connection.drop_table(:foos, if_exists: true)
+ ActiveRecord::Base.establish_connection(:arunit)
+ end
+ end
end