diff options
Diffstat (limited to 'config/initializers/active_record_data_types.rb')
-rw-r--r-- | config/initializers/active_record_data_types.rb | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/config/initializers/active_record_data_types.rb b/config/initializers/active_record_data_types.rb deleted file mode 100644 index 7f4bd32c221..00000000000 --- a/config/initializers/active_record_data_types.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true - -# ActiveRecord custom data type for storing datetimes with timezone information. -# See https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/11229 - -require 'active_record/connection_adapters/postgresql_adapter' - -module ActiveRecord::ConnectionAdapters::PostgreSQL::OID - # Add the class `DateTimeWithTimeZone` so we can map `timestamptz` to it. - class DateTimeWithTimeZone < DateTime - def type - :datetime_with_timezone - end - end -end - -module RegisterDateTimeWithTimeZone - # Run original `initialize_type_map` and then register `timestamptz` as a - # `DateTimeWithTimeZone`. - # - # Apparently it does not matter that the original `initialize_type_map` - # aliases `timestamptz` to `timestamp`. - # - # When schema dumping, `timestamptz` columns will be output as - # `t.datetime_with_timezone`. - def initialize_type_map(mapping = type_map) - super mapping - - register_class_with_precision( - mapping, - 'timestamptz', - ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID::DateTimeWithTimeZone - ) - end -end - -class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter - prepend RegisterDateTimeWithTimeZone - - # Add column type `datetime_with_timezone` so we can do this in - # migrations: - # - # add_column(:users, :datetime_with_timezone) - # - NATIVE_DATABASE_TYPES[:datetime_with_timezone] = { name: 'timestamptz' } -end - -def connection_active? - ActiveRecord::Base.connection.active? # rubocop:disable Database/MultipleDatabases -rescue StandardError - false -end - -# Ensure `datetime_with_timezone` columns are correctly written to schema.rb -ActiveRecord::Base.connection.send(:reload_type_map) if connection_active? - -ActiveRecord::Base.time_zone_aware_types += [:datetime_with_timezone] |