Add Rails 6.1 compatibility

Rails 6.1 needs the following changes:
- Add `owner: nil` to `define_method_attribute` calls
- Pass `options` to error `add` method as keyword argument

Ref:
- https://api.rubyonrails.org/v6.0.0/classes/ActiveModel/Errors.html#method-i-add
- https://api.rubyonrails.org/v6.1.0/classes/ActiveModel/Errors.html#method-i-add

Fix: #193
This commit is contained in:
Pedro Paiva 2020-08-23 22:37:14 -03:00 committed by Geremia Taglialatela
parent 16221ac092
commit 709d2c87e2
No known key found for this signature in database
GPG Key ID: 4A6344430AD4E29F
11 changed files with 48 additions and 8 deletions

View File

@ -6,6 +6,8 @@ gemfile:
- gemfiles/rails_5_0.gemfile - gemfiles/rails_5_0.gemfile
- gemfiles/rails_5_1.gemfile - gemfiles/rails_5_1.gemfile
- gemfiles/rails_5_2.gemfile - gemfiles/rails_5_2.gemfile
- gemfiles/rails_6_0.gemfile
- gemfiles/rails_6_1.gemfile
rvm: rvm:
- "2.5.3" - "2.5.3"

View File

@ -1,5 +1,6 @@
appraise "rails_5_0" do appraise "rails_5_0" do
gem "rails", "~> 5.0.0" gem "rails", "~> 5.0.0"
gem 'sqlite3', '~> 1.3.6'
end end
appraise "rails_5_1" do appraise "rails_5_1" do
@ -9,3 +10,11 @@ end
appraise "rails_5_2" do appraise "rails_5_2" do
gem "rails", "~> 5.2.0" gem "rails", "~> 5.2.0"
end end
appraise "rails_6_0" do
gem "rails", "~> 6.0.0"
end
appraise "rails_6_1" do
gem "rails", "~> 6.1.0"
end

View File

@ -5,6 +5,7 @@
in a request. in a request.
* Add initializer to ensure Timeliness v0.4+ ambiguous date config is set * Add initializer to ensure Timeliness v0.4+ ambiguous date config is set
correctly when using `use_euro_formats` or `remove_use_formats'. correctly when using `use_euro_formats` or `remove_use_formats'.
* Add Rails 6.1 compatibility
Breaking Changes Breaking Changes
* Update Multiparameter extension to use ActiveRecord type classes with multiparameter handling * Update Multiparameter extension to use ActiveRecord type classes with multiparameter handling

View File

@ -2,11 +2,11 @@ source 'http://rubygems.org'
gemspec gemspec
gem 'rails', '~> 5.2.4' gem 'rails', '~> 6.1.0'
gem 'rspec' gem 'rspec'
gem 'rspec-rails', '~> 3.7' gem 'rspec-rails', '~> 3.7'
gem 'sqlite3'
gem 'timecop' gem 'timecop'
gem 'byebug' gem 'byebug'
gem 'appraisal' gem 'appraisal'
gem 'sqlite3', '~> 1.3.6'
gem 'nokogiri', '~> 1.8' gem 'nokogiri', '~> 1.8'

View File

@ -5,10 +5,10 @@ source "http://rubygems.org"
gem "rails", "~> 5.0.0" gem "rails", "~> 5.0.0"
gem "rspec" gem "rspec"
gem "rspec-rails", "~> 3.7" gem "rspec-rails", "~> 3.7"
gem "sqlite3", "~> 1.3.6"
gem "timecop" gem "timecop"
gem "byebug" gem "byebug"
gem "appraisal" gem "appraisal"
gem "sqlite3", "~> 1.3.6"
gem "nokogiri", "~> 1.8" gem "nokogiri", "~> 1.8"
gemspec path: "../" gemspec path: "../"

View File

@ -5,10 +5,10 @@ source "http://rubygems.org"
gem "rails", "~> 5.1.0" gem "rails", "~> 5.1.0"
gem "rspec" gem "rspec"
gem "rspec-rails", "~> 3.7" gem "rspec-rails", "~> 3.7"
gem "sqlite3"
gem "timecop" gem "timecop"
gem "byebug" gem "byebug"
gem "appraisal" gem "appraisal"
gem "sqlite3", "~> 1.3.6"
gem "nokogiri", "~> 1.8" gem "nokogiri", "~> 1.8"
gemspec path: "../" gemspec path: "../"

View File

@ -5,10 +5,10 @@ source "http://rubygems.org"
gem "rails", "~> 5.2.0" gem "rails", "~> 5.2.0"
gem "rspec" gem "rspec"
gem "rspec-rails", "~> 3.7" gem "rspec-rails", "~> 3.7"
gem "sqlite3"
gem "timecop" gem "timecop"
gem "byebug" gem "byebug"
gem "appraisal" gem "appraisal"
gem "sqlite3", "~> 1.3.6"
gem "nokogiri", "~> 1.8" gem "nokogiri", "~> 1.8"
gemspec path: "../" gemspec path: "../"

View File

@ -0,0 +1,14 @@
# This file was generated by Appraisal
source "http://rubygems.org"
gem "rails", "~> 6.0.0"
gem "rspec"
gem "rspec-rails", "~> 3.7"
gem "sqlite3"
gem "timecop"
gem "byebug"
gem "appraisal"
gem "nokogiri", "~> 1.8"
gemspec path: "../"

View File

@ -0,0 +1,14 @@
# This file was generated by Appraisal
source "http://rubygems.org"
gem "rails", "~> 6.1.0"
gem "rspec"
gem "rspec-rails", "~> 3.7"
gem "sqlite3"
gem "timecop"
gem "byebug"
gem "appraisal"
gem "nokogiri", "~> 1.8"
gemspec path: "../"

View File

@ -86,7 +86,7 @@ module ValidatesTimeliness
def add_error(record, attr_name, message, value=nil) def add_error(record, attr_name, message, value=nil)
value = format_error_value(value) if value value = format_error_value(value) if value
message_options = { :message => options.fetch(:"#{message}_message", options[:message]), :restriction => value } message_options = { :message => options.fetch(:"#{message}_message", options[:message]), :restriction => value }
record.errors.add(attr_name, message, message_options) record.errors.add(attr_name, message, **message_options)
end end
def format_error_value(value) def format_error_value(value)

View File

@ -15,11 +15,11 @@ module TestModel
self.model_attributes[name] = type self.model_attributes[name] = type
end end
def define_method_attribute=(attr_name) def define_method_attribute=(attr_name, owner: nil)
generated_attribute_methods.module_eval("def #{attr_name}=(new_value); @attributes['#{attr_name}']=self.class.type_cast('#{attr_name}', new_value); end", __FILE__, __LINE__) generated_attribute_methods.module_eval("def #{attr_name}=(new_value); @attributes['#{attr_name}']=self.class.type_cast('#{attr_name}', new_value); end", __FILE__, __LINE__)
end end
def define_method_attribute(attr_name) def define_method_attribute(attr_name, owner: nil)
generated_attribute_methods.module_eval("def #{attr_name}; @attributes['#{attr_name}']; end", __FILE__, __LINE__) generated_attribute_methods.module_eval("def #{attr_name}; @attributes['#{attr_name}']; end", __FILE__, __LINE__)
end end