Skip to content

Instantly share code, notes, and snippets.

@davidbalbert
Last active August 29, 2015 14:26
Show Gist options
  • Save davidbalbert/90e8da8668de8dfe10ea to your computer and use it in GitHub Desktop.
Save davidbalbert/90e8da8668de8dfe10ea to your computer and use it in GitHub Desktop.
Active Record tsrange timezone conversion bug
begin
require 'bundler/inline'
rescue LoadError => e
$stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler'
raise e
end
gemfile(true) do
source 'https://rubygems.org'
gem 'rails', github: 'rails/rails'
gem 'arel', github: 'rails/arel'
gem 'pg'
end
system("createdb tsrange_test")
at_exit do
ActiveRecord::Base.connection.disconnect!
system("dropdb tsrange_test")
end
require 'active_record'
require 'minitest/autorun'
require 'logger'
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: 'postgresql', database: 'tsrange_test')
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :sessions, force: true do |t|
t.tsrange :duration
end
end
Time.zone = 'Eastern Time (US & Canada)'
class Session < ActiveRecord::Base; end
class BugTest < Minitest::Test
def test_tsrange_conversion
session = Session.create!(duration: Time.zone.now..10.minutes.from_now)
session.reload
# "EST" or "EDT" "UTC"
assert_equal Time.zone.now.zone, session.duration.begin.zone
assert_equal Time.zone.now.zone, session.duration.end.zone
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment