diff --git a/Appraisals b/Appraisals index ccafefa..8c30e5b 100644 --- a/Appraisals +++ b/Appraisals @@ -13,3 +13,11 @@ end appraise "rails_5_0" do gem "rails", "~> 5.0.0" end + +appraise "rails_5_1" do + gem "rails", "~> 5.1.0" +end + +appraise "rails_5_2" do + gem "rails", "~> 5.2.0" +end diff --git a/Gemfile b/Gemfile index 8247135..67610d0 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,3 @@ gem 'timecop' gem 'appraisal' gem 'sqlite3' gem 'nokogiri' - -group :active_record do - gem 'sqlite3-ruby', :require => 'sqlite3' -end diff --git a/ae-validates_timeliness.gemspec b/ae-validates_timeliness.gemspec index 45c9f34..9cddf4b 100644 --- a/ae-validates_timeliness.gemspec +++ b/ae-validates_timeliness.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |s| s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) } s.require_paths = ["lib"] - s.add_runtime_dependency(%q, [">= 4.0", "< 5.1"]) + s.add_runtime_dependency(%q, [">= 4.0", "< 5.3"]) s.add_runtime_dependency(%q, ["~> 0.3.7"]) s.add_development_dependency "coveralls" diff --git a/gemfiles/rails_4_0.gemfile b/gemfiles/rails_4_0.gemfile index c2990b6..06a5cd6 100644 --- a/gemfiles/rails_4_0.gemfile +++ b/gemfiles/rails_4_0.gemfile @@ -8,8 +8,4 @@ gem "appraisal" gem "sqlite3" gem "nokogiri" -group :active_record do - gem "sqlite3-ruby", :require => "sqlite3" -end - -gemspec :path => "../" +gemspec path: "../" diff --git a/gemfiles/rails_4_1.gemfile b/gemfiles/rails_4_1.gemfile index 6311646..010e9bc 100644 --- a/gemfiles/rails_4_1.gemfile +++ b/gemfiles/rails_4_1.gemfile @@ -8,8 +8,4 @@ gem "appraisal" gem "sqlite3" gem "nokogiri" -group :active_record do - gem "sqlite3-ruby", :require => "sqlite3" -end - -gemspec :path => "../" +gemspec path: "../" diff --git a/gemfiles/rails_4_2.gemfile b/gemfiles/rails_4_2.gemfile index b989715..353d93b 100644 --- a/gemfiles/rails_4_2.gemfile +++ b/gemfiles/rails_4_2.gemfile @@ -8,8 +8,4 @@ gem "appraisal" gem "sqlite3" gem "nokogiri" -group :active_record do - gem "sqlite3-ruby", :require => "sqlite3" -end - -gemspec :path => "../" +gemspec path: "../" diff --git a/gemfiles/rails_5_0.gemfile b/gemfiles/rails_5_0.gemfile index 8b6bfff..a2ef538 100644 --- a/gemfiles/rails_5_0.gemfile +++ b/gemfiles/rails_5_0.gemfile @@ -8,8 +8,4 @@ gem "appraisal" gem "sqlite3" gem "nokogiri" -group :active_record do - gem "sqlite3-ruby", :require => "sqlite3" -end - -gemspec :path => "../" +gemspec path: "../" diff --git a/gemfiles/rails_5_1.gemfile b/gemfiles/rails_5_1.gemfile new file mode 100644 index 0000000..12156c0 --- /dev/null +++ b/gemfiles/rails_5_1.gemfile @@ -0,0 +1,11 @@ +# This file was generated by Appraisal + +source "http://rubygems.org" + +gem "rails", "~> 5.1.0" +gem "timecop" +gem "appraisal" +gem "sqlite3" +gem "nokogiri" + +gemspec path: "../" diff --git a/gemfiles/rails_5_2.gemfile b/gemfiles/rails_5_2.gemfile new file mode 100644 index 0000000..7588d1d --- /dev/null +++ b/gemfiles/rails_5_2.gemfile @@ -0,0 +1,11 @@ +# This file was generated by Appraisal + +source "http://rubygems.org" + +gem "rails", "~> 5.2.0" +gem "timecop" +gem "appraisal" +gem "sqlite3" +gem "nokogiri" + +gemspec path: "../" diff --git a/lib/validates_timeliness/orm/active_record.rb b/lib/validates_timeliness/orm/active_record.rb index a799767..5629ae0 100644 --- a/lib/validates_timeliness/orm/active_record.rb +++ b/lib/validates_timeliness/orm/active_record.rb @@ -22,12 +22,20 @@ def timeliness_column_for_attribute(attr_name) ::ActiveRecord::ConnectionAdapters::Column.new(attr_name, nil, validation_type.to_s) else connection = ::ActiveRecord::Base.connection - arguments = if ::ActiveRecord.version > ::Gem::Version.new('4.3') - [attr_name, nil, connection.send(:fetch_type_metadata, validation_type.to_s), validation_type.to_s, table_name] + sql_type = validation_type.to_s + cast_type = begin + if ::ActiveRecord.version < ::Gem::Version.new('5') + connection.send(:lookup_cast_type, sql_type) else - [attr_name, nil, connection.lookup_cast_type(validation_type.to_s), validation_type.to_s] + connection.send(:fetch_type_metadata, sql_type) end - connection.new_column(*arguments) + end + + if ::ActiveRecord.version < ::Gem::Version.new('5.1') + connection.send(:new_column, attr_name, nil, cast_type, sql_type, table_name) + else + connection.send(:new_column_from_field, table_name, { 'name' => attr_name, 'type' => sql_type }) + end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c7d8f9c..0b6059b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -69,6 +69,9 @@ class PersonWithShim < Person ActiveRecord::Base.default_timezone = :utc ActiveRecord::Base.time_zone_aware_attributes = true +if ActiveRecord.version >= Gem::Version.new('5') + ActiveRecord::Base.time_zone_aware_types = [:datetime] +end ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'}) ActiveRecord::Migration.verbose = false ActiveRecord::Schema.define(:version => 1) do