db/migrate/20160707154842_create_versions.rb in phcmembers-8.1.2 vs db/migrate/20160707154842_create_versions.rb in phcmembers-9.0.0b

- old
+ new

@@ -6,25 +6,25 @@ # - `Mysql2Adapter` - Used by `mysql2` gem. MYSQL_ADAPTERS = [ "ActiveRecord::ConnectionAdapters::MysqlAdapter", "ActiveRecord::ConnectionAdapters::Mysql2Adapter" ].freeze - + # The largest text column available in all supported RDBMS is # 1024^3 - 1 bytes, roughly one gibibyte. We specify a size # so that MySQL will use `longtext` instead of `text`. Otherwise, # when serializing very large objects, `text` might not be big enough. TEXT_BYTES = 1_073_741_823 - + def change create_table :versions, versions_table_options do |t| t.string :item_type, item_type_options t.integer :item_id, null: false t.string :event, null: false t.string :whodunnit t.text :object, limit: TEXT_BYTES - + # Known issue in MySQL: fractional second precision # ------------------------------------------------- # # MySQL timestamp columns do not support fractional seconds unless # defined with "fractional seconds precision". MySQL users should manually @@ -38,24 +38,24 @@ # t.datetime :created_at end add_index :versions, [:item_type, :item_id] end - + private - + # MySQL 5.6 utf8mb4 limit is 191 chars for keys used in indexes. # See https://github.com/airblade/paper_trail/issues/651 def item_type_options opt = { null: false } opt[:limit] = 191 if mysql? opt end - + def mysql? MYSQL_ADAPTERS.include?(connection.class.name) end - + # Even modern versions of MySQL still use `latin1` as the default character # encoding. Many users are not aware of this, and run into trouble when they # try to use PaperTrail in apps that otherwise tend to use UTF-8. Postgres, by # comparison, uses UTF-8 except in the unusual case where the OS is configured # with a custom locale.