c9c5788a52
In Ruby 2.4 the `to_time` method for both `DateTime` and `Time` will preserve the timezone of the receiver when converting to an instance of `Time`. Since Rails 5.0 will support Ruby 2.2, 2.3 and later we need to introduce a compatibility layer so that apps that upgrade do not break. New apps will have a config initializer file that defaults to match the new Ruby 2.4 behavior going forward. For information about the changes to Ruby see: https://bugs.ruby-lang.org/issues/12189 https://bugs.ruby-lang.org/issues/12271 Fixes #24617.
25 lines
554 B
Ruby
25 lines
554 B
Ruby
module TimeZoneTestHelpers
|
|
def with_tz_default(tz = nil)
|
|
old_tz = Time.zone
|
|
Time.zone = tz
|
|
yield
|
|
ensure
|
|
Time.zone = old_tz
|
|
end
|
|
|
|
def with_env_tz(new_tz = 'US/Eastern')
|
|
old_tz, ENV['TZ'] = ENV['TZ'], new_tz
|
|
yield
|
|
ensure
|
|
old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
|
|
end
|
|
|
|
def with_preserve_timezone(value)
|
|
old_preserve_tz = ActiveSupport.to_time_preserves_timezone
|
|
ActiveSupport.to_time_preserves_timezone = value
|
|
yield
|
|
ensure
|
|
ActiveSupport.to_time_preserves_timezone = old_preserve_tz
|
|
end
|
|
end
|