active_data 1.1.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +35 -0
- data/.rubocop.yml +1 -0
- data/Appraisals +2 -1
- data/CHANGELOG.md +16 -0
- data/active_data.gemspec +1 -1
- data/gemfiles/rails.4.2.gemfile +1 -0
- data/gemfiles/rails.5.0.gemfile +1 -0
- data/gemfiles/rails.5.1.gemfile +1 -0
- data/gemfiles/rails.5.2.gemfile +1 -0
- data/gemfiles/{rails.4.0.gemfile → rails.6.0.gemfile} +3 -3
- data/gemfiles/{rails.4.1.gemfile → rails.6.1.gemfile} +3 -3
- data/gemfiles/rails.7.0.gemfile +14 -0
- data/lib/active_data/model/attributes/base.rb +6 -1
- data/lib/active_data/model/representation.rb +17 -6
- data/lib/active_data/model/scopes.rb +35 -7
- data/lib/active_data/model/validations/associated.rb +1 -1
- data/lib/active_data/model/validations/nested.rb +21 -12
- data/lib/active_data/version.rb +1 -1
- data/lib/active_data.rb +11 -1
- data/spec/lib/active_data/model/attributes/attribute_spec.rb +42 -3
- data/spec/lib/active_data/model/attributes/localized_spec.rb +1 -1
- data/spec/lib/active_data/model/dirty_spec.rb +2 -2
- data/spec/lib/active_data/model/representation_spec.rb +7 -1
- data/spec/lib/active_data/model/typecasting_spec.rb +4 -4
- data/spec/spec_helper.rb +2 -0
- metadata +24 -9
- data/.travis.yml +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80daeb6d630cc5fc243193c917e0b43f19b2fce35a746200551921f3892e1677
|
4
|
+
data.tar.gz: 4fc2d73f4d3a59ce0804fa652ba782ee33997e9be4870b4ee402d67b920a8c45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d8fe25346c0e72ac3600ed8f89266864cf86081d8a0db463e4b856688e7c5cd7a936b76c872f7470a0f942989ecc51bf5e1a0615ea68f74855119910607b139
|
7
|
+
data.tar.gz: c0f31ed6be42bbe6e3d06f82e4d546c04b72b7a527cb628019516531b430273a89eae8c727a4c4edc2010aa3cdd80fa8195953f793296e4726b2d5f666b973ec
|
@@ -0,0 +1,35 @@
|
|
1
|
+
name: CI
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
rspec:
|
5
|
+
strategy:
|
6
|
+
fail-fast: false
|
7
|
+
matrix:
|
8
|
+
include:
|
9
|
+
- { ruby: '2.3', rails: '4.2' }
|
10
|
+
- { ruby: '2.4', rails: '5.0' }
|
11
|
+
- { ruby: '2.5', rails: '5.1' }
|
12
|
+
- { ruby: '2.6', rails: '5.2' }
|
13
|
+
- { ruby: '2.7', rails: '6.0' }
|
14
|
+
- { ruby: '3.0', rails: '6.1' }
|
15
|
+
- { ruby: '3.0', rails: '7.0' }
|
16
|
+
runs-on: ubuntu-latest
|
17
|
+
env:
|
18
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/rails.${{ matrix.rails }}.gemfile
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
- uses: ruby/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby }}
|
24
|
+
bundler-cache: true
|
25
|
+
- run: bundle exec rspec
|
26
|
+
|
27
|
+
rubocop:
|
28
|
+
runs-on: ubuntu-latest
|
29
|
+
steps:
|
30
|
+
- uses: actions/checkout@v2
|
31
|
+
- uses: ruby/setup-ruby@v1
|
32
|
+
with:
|
33
|
+
ruby-version: 3.0
|
34
|
+
bundler-cache: true
|
35
|
+
- run: bundle exec rubocop
|
data/.rubocop.yml
CHANGED
data/Appraisals
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
%w[4.0
|
1
|
+
%w[4.2 5.0 5.1 5.2 6.0 6.1 7.0].each do |version|
|
2
2
|
appraise "rails.#{version}" do
|
3
3
|
gem 'activesupport', "~> #{version}.0"
|
4
4
|
gem 'activemodel', "~> #{version}.0"
|
5
5
|
gem 'activerecord', "~> #{version}.0"
|
6
|
+
gem 'sqlite3', '~> 1.3.6' if version < '6.0'
|
6
7
|
end
|
7
8
|
end
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# master
|
2
2
|
|
3
|
+
# Version 1.2.0
|
4
|
+
|
5
|
+
* Rails 6.1 and 7 support (#80). Thanks to @ojab and @rewritten
|
6
|
+
|
7
|
+
# Version 1.1.7
|
8
|
+
|
9
|
+
* Add typecasting from `ActionController::Parameters` to `Hash` (#73)
|
10
|
+
|
11
|
+
# Version 1.1.6
|
12
|
+
|
13
|
+
* Fix Ruby 2.6 deprecations (#72)
|
14
|
+
|
15
|
+
# Version 1.1.5
|
16
|
+
|
17
|
+
* Rails 6 support (#70, #71)
|
18
|
+
|
3
19
|
# Version 1.1.4
|
4
20
|
|
5
21
|
## Changes
|
data/active_data.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.require_paths = ['lib']
|
15
15
|
gem.version = ActiveData::VERSION
|
16
16
|
|
17
|
+
gem.add_development_dependency 'actionpack', '>= 4.0'
|
17
18
|
gem.add_development_dependency 'activerecord', '>= 4.0'
|
18
19
|
gem.add_development_dependency 'appraisal'
|
19
20
|
gem.add_development_dependency 'database_cleaner'
|
@@ -21,7 +22,6 @@ Gem::Specification.new do |gem|
|
|
21
22
|
gem.add_development_dependency 'rspec', '~> 3.7.0'
|
22
23
|
gem.add_development_dependency 'rspec-its'
|
23
24
|
gem.add_development_dependency 'rubocop', '0.52.1'
|
24
|
-
gem.add_development_dependency 'rubysl', '~> 2.0' if RUBY_ENGINE == 'rbx'
|
25
25
|
gem.add_development_dependency 'sqlite3'
|
26
26
|
gem.add_development_dependency 'uuidtools'
|
27
27
|
|
data/gemfiles/rails.4.2.gemfile
CHANGED
data/gemfiles/rails.5.0.gemfile
CHANGED
data/gemfiles/rails.5.1.gemfile
CHANGED
data/gemfiles/rails.5.2.gemfile
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "activesupport", "~>
|
6
|
-
gem "activemodel", "~>
|
7
|
-
gem "activerecord", "~>
|
5
|
+
gem "activesupport", "~> 6.0.0"
|
6
|
+
gem "activemodel", "~> 6.0.0"
|
7
|
+
gem "activerecord", "~> 6.0.0"
|
8
8
|
|
9
9
|
group :test do
|
10
10
|
gem "guard"
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "activesupport", "~>
|
6
|
-
gem "activemodel", "~>
|
7
|
-
gem "activerecord", "~>
|
5
|
+
gem "activesupport", "~> 6.1.0"
|
6
|
+
gem "activemodel", "~> 6.1.0"
|
7
|
+
gem "activerecord", "~> 6.1.0"
|
8
8
|
|
9
9
|
group :test do
|
10
10
|
gem "guard"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "activesupport", "~> 7.0.0"
|
6
|
+
gem "activemodel", "~> 7.0.0"
|
7
|
+
gem "activerecord", "~> 7.0.0"
|
8
|
+
|
9
|
+
group :test do
|
10
|
+
gem "guard"
|
11
|
+
gem "guard-rspec"
|
12
|
+
end
|
13
|
+
|
14
|
+
gemspec path: "../"
|
@@ -81,8 +81,13 @@ module ActiveData
|
|
81
81
|
pollute = owner.class.dirty? && !owner.send(:attribute_changed?, name)
|
82
82
|
|
83
83
|
if pollute
|
84
|
-
previous_value =
|
84
|
+
previous_value = owner.__send__(name)
|
85
|
+
owner.send("#{name}_will_change!")
|
86
|
+
|
85
87
|
result = yield
|
88
|
+
|
89
|
+
owner.__send__(:clear_attribute_changes, [name]) if owner.__send__(name) == previous_value
|
90
|
+
|
86
91
|
if previous_value != read || (
|
87
92
|
read.respond_to?(:changed?) &&
|
88
93
|
read.changed?
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'active_model/version'
|
1
2
|
require 'active_data/model/attributes/reflections/represents'
|
2
3
|
require 'active_data/model/attributes/represents'
|
3
4
|
|
@@ -67,14 +68,24 @@ module ActiveData
|
|
67
68
|
#
|
68
69
|
def emerge_represented_attributes_errors!
|
69
70
|
self.class.represented_attributes.each do |attribute|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
71
|
+
move_errors(:"#{attribute.reference}.#{attribute.column}", attribute.column)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
if ActiveModel.version >= Gem::Version.new('6.1.0')
|
76
|
+
def move_errors(from, to)
|
77
|
+
errors[from].each do |error_message|
|
78
|
+
errors.add(to, error_message)
|
79
|
+
errors.delete(from)
|
76
80
|
end
|
77
81
|
end
|
82
|
+
else # up to 6.0.x
|
83
|
+
def move_errors(from, to)
|
84
|
+
return unless errors.messages.key?(from) && errors.messages[from].present?
|
85
|
+
|
86
|
+
errors[to].concat(errors.messages[from])
|
87
|
+
errors.delete(from)
|
88
|
+
end
|
78
89
|
end
|
79
90
|
end
|
80
91
|
end
|
@@ -37,16 +37,44 @@ module ActiveData
|
|
37
37
|
super || self.class._scope_model.respond_to?(method)
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
# rubocop:disable Style/MethodMissing
|
41
|
+
# rubocop-0.52.1 doesn't understand that `#respond_to_missing?` is defined above
|
42
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
|
43
|
+
def method_missing(method, *args, **kwargs, &block)
|
44
|
+
with_scope do
|
45
|
+
model = self.class._scope_model
|
46
|
+
if model.respond_to?(method)
|
47
|
+
result = model.public_send(method, *args, **kwargs, &block)
|
48
|
+
result.is_a?(ActiveData::Model::Scopes) ? result : model.scope_class.new(result)
|
49
|
+
else
|
50
|
+
super
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
55
|
+
def method_missing(method, *args, **kwargs, &block)
|
56
|
+
with_scope do
|
57
|
+
model = self.class._scope_model
|
58
|
+
if model.respond_to?(method)
|
59
|
+
model.public_send(method, *args, **kwargs, &block)
|
60
|
+
else
|
61
|
+
super
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
else # up to 2.6.x
|
66
|
+
def method_missing(method, *args, &block)
|
67
|
+
with_scope do
|
68
|
+
model = self.class._scope_model
|
69
|
+
if model.respond_to?(method)
|
70
|
+
model.public_send(method, *args, &block)
|
71
|
+
else
|
72
|
+
super
|
73
|
+
end
|
47
74
|
end
|
48
75
|
end
|
49
76
|
end
|
77
|
+
# rubocop:enable Style/MethodMissing
|
50
78
|
|
51
79
|
def with_scope
|
52
80
|
previous_scope = self.class._scope_model.current_scope
|
@@ -6,7 +6,7 @@ module ActiveData
|
|
6
6
|
invalid_records = Array.wrap(value).reject do |r|
|
7
7
|
r.respond_to?(:valid?) && r.valid?(record.validation_context)
|
8
8
|
end
|
9
|
-
record.errors.add(attribute, :invalid, options.merge(value: value)) if invalid_records.present?
|
9
|
+
record.errors.add(attribute, :invalid, **options.merge(value: value)) if invalid_records.present?
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_model/version'
|
2
|
+
|
1
3
|
module ActiveData
|
2
4
|
module Model
|
3
5
|
module Validations
|
@@ -5,19 +7,26 @@ module ActiveData
|
|
5
7
|
def self.validate_nested(record, name, value)
|
6
8
|
if value.is_a?(Enumerable)
|
7
9
|
value.each.with_index do |object, i|
|
8
|
-
if yield
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
import_errors(object.errors, record.errors, "#{name}.#{i}") if yield object
|
11
|
+
end
|
12
|
+
elsif value
|
13
|
+
import_errors(value.errors, record.errors, name.to_s) if yield value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
if ActiveModel.version >= Gem::Version.new('6.1.0')
|
18
|
+
def self.import_errors(from, to, prefix)
|
19
|
+
from.each do |error|
|
20
|
+
key = "#{prefix}.#{error.attribute}"
|
21
|
+
to.import(error, attribute: key) unless to.added?(key, error.type, error.options)
|
15
22
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
23
|
+
end
|
24
|
+
else # up to 6.0.x
|
25
|
+
def self.import_errors(from, to, prefix)
|
26
|
+
from.each do |key, message|
|
27
|
+
key = "#{prefix}.#{key}"
|
28
|
+
to[key] << message
|
29
|
+
to[key].uniq!
|
21
30
|
end
|
22
31
|
end
|
23
32
|
end
|
data/lib/active_data/version.rb
CHANGED
data/lib/active_data.rb
CHANGED
@@ -61,6 +61,16 @@ module ActiveData
|
|
61
61
|
value
|
62
62
|
end
|
63
63
|
end
|
64
|
+
ActiveSupport.on_load :action_controller do
|
65
|
+
ActiveData.typecaster('Hash') do |value|
|
66
|
+
case value
|
67
|
+
when ActionController::Parameters
|
68
|
+
value.to_h if value.permitted?
|
69
|
+
when ::Hash then
|
70
|
+
value
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
64
74
|
typecaster('Date') do |value|
|
65
75
|
begin
|
66
76
|
value.to_date
|
@@ -100,7 +110,7 @@ module ActiveData
|
|
100
110
|
typecaster('BigDecimal') do |value|
|
101
111
|
next unless value
|
102
112
|
begin
|
103
|
-
|
113
|
+
BigDecimal(Float(value).to_s)
|
104
114
|
rescue ArgumentError, TypeError
|
105
115
|
nil
|
106
116
|
end
|
@@ -58,9 +58,48 @@ describe ActiveData::Model::Attributes::Attribute do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
describe '#typecast' do
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
context 'when Object' do
|
62
|
+
specify { expect(attribute.typecast(:hello)).to eq(:hello) }
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when Integer' do
|
66
|
+
specify { expect(attribute(type: Integer).typecast(42)).to eq(42) }
|
67
|
+
specify { expect(attribute(type: Integer).typecast('42')).to eq(42) }
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when Hash' do
|
71
|
+
let(:to_h) { {'x' => {'foo' => 'bar'}, 'y' => 2} }
|
72
|
+
let(:parameters) { ActionController::Parameters.new(to_h) }
|
73
|
+
|
74
|
+
before(:all) do
|
75
|
+
@default_hash_typecaster = ActiveData.typecaster('Hash')
|
76
|
+
require 'action_controller'
|
77
|
+
Class.new(ActionController::Base)
|
78
|
+
@action_controller_hash_typecaster = ActiveData.typecaster('Hash')
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when ActionController is loaded' do
|
82
|
+
before { ActiveData.typecaster('Hash', &@action_controller_hash_typecaster) }
|
83
|
+
after { ActiveData.typecaster('Hash', &@default_hash_typecaster) }
|
84
|
+
|
85
|
+
specify { expect(attribute(type: Hash).typecast(nil)).to be_nil }
|
86
|
+
specify { expect(attribute(type: Hash).typecast(to_h)).to eq(to_h) }
|
87
|
+
specify { expect(attribute(type: Hash).typecast(parameters)).to be_nil }
|
88
|
+
specify { expect(attribute(type: Hash).typecast(parameters.permit(:y, x: [:foo]))).to eq(to_h) }
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when ActionController is not loaded' do
|
92
|
+
before { ActiveData.typecaster('Hash', &@default_hash_typecaster) }
|
93
|
+
|
94
|
+
specify { expect(attribute(type: Hash).typecast(nil)).to be_nil }
|
95
|
+
specify { expect(attribute(type: Hash).typecast(to_h)).to eq(to_h) }
|
96
|
+
if ActiveSupport.version > Gem::Version.new('4.3')
|
97
|
+
specify { expect(attribute(type: Hash).typecast(parameters.permit(:y, x: [:foo]))).to be_nil }
|
98
|
+
else
|
99
|
+
specify { expect(attribute(type: Hash).typecast(parameters.permit(:y, x: [:foo]))).to eq(to_h) }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
64
103
|
end
|
65
104
|
|
66
105
|
describe '#enum' do
|
@@ -93,7 +93,7 @@ describe ActiveData::Model::Attributes::Localized do
|
|
93
93
|
before do
|
94
94
|
require 'i18n/backend/fallbacks'
|
95
95
|
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
96
|
-
I18n.fallbacks
|
96
|
+
I18n.fallbacks[:en] = [:ru]
|
97
97
|
end
|
98
98
|
after { I18n.fallbacks = false }
|
99
99
|
its(:name) { should == 'Привет' }
|
@@ -71,8 +71,8 @@ describe ActiveData::Model::Dirty do
|
|
71
71
|
specify { expect(Model.new(numbers: '42').changes).to eq('numbers' => [[], [42]]) }
|
72
72
|
|
73
73
|
# Have no idea how should it work right now
|
74
|
-
specify { expect(Model.new(title: 'Hello').changes).to eq('title' => [
|
75
|
-
specify { expect(Model.new(title_translations: {en: 'Hello'}).changes).to eq('title' => [
|
74
|
+
specify { expect(Model.new(title: 'Hello').changes).to eq('title' => [nil, 'Hello']) }
|
75
|
+
specify { expect(Model.new(title_translations: {en: 'Hello'}).changes).to eq('title' => [nil, 'Hello']) }
|
76
76
|
|
77
77
|
specify { expect(Model.new).not_to respond_to :something_changed? }
|
78
78
|
specify { expect(Model.new).to respond_to :n_changed? }
|
@@ -39,11 +39,17 @@ describe ActiveData::Model::Representation do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
context 'dirty' do
|
42
|
-
before
|
42
|
+
before do
|
43
|
+
Author.include ActiveData::Model::Dirty
|
44
|
+
Post.include ActiveData::Model::Dirty
|
45
|
+
end
|
43
46
|
|
44
47
|
specify do
|
45
48
|
expect(Post.new(author: author, rate: '33').changes)
|
46
49
|
.to eq('author' => [nil, author], 'rate' => [42, 33])
|
50
|
+
|
51
|
+
expect(Post.new(author: author, rate: '33').changes)
|
52
|
+
.to eq('author' => [nil, author])
|
47
53
|
end
|
48
54
|
end
|
49
55
|
|
@@ -66,11 +66,11 @@ describe ActiveData::Model::Attributes do
|
|
66
66
|
|
67
67
|
specify { expect(model.new(column: 'hello').column).to be_nil }
|
68
68
|
specify { expect(model.new(column: '123hello').column).to be_nil }
|
69
|
-
specify { expect(model.new(column: '123').column).to eq(BigDecimal
|
69
|
+
specify { expect(model.new(column: '123').column).to eq(BigDecimal('123.0')) }
|
70
70
|
specify { expect(model.new(column: '123.').column).to be_nil }
|
71
|
-
specify { expect(model.new(column: '123.5').column).to eq(BigDecimal
|
72
|
-
specify { expect(model.new(column: 123).column).to eq(BigDecimal
|
73
|
-
specify { expect(model.new(column: 123.5).column).to eq(BigDecimal
|
71
|
+
specify { expect(model.new(column: '123.5').column).to eq(BigDecimal('123.5')) }
|
72
|
+
specify { expect(model.new(column: 123).column).to eq(BigDecimal('123.0')) }
|
73
|
+
specify { expect(model.new(column: 123.5).column).to eq(BigDecimal('123.5')) }
|
74
74
|
specify { expect(model.new(column: nil).column).to be_nil }
|
75
75
|
specify { expect(model.new(column: [123.5]).column).to be_nil }
|
76
76
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pyromaniac
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: actionpack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: activerecord
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,11 +200,11 @@ extensions: []
|
|
186
200
|
extra_rdoc_files: []
|
187
201
|
files:
|
188
202
|
- ".codeclimate.yml"
|
203
|
+
- ".github/workflows/ci.yml"
|
189
204
|
- ".gitignore"
|
190
205
|
- ".rspec"
|
191
206
|
- ".rubocop.yml"
|
192
207
|
- ".rubocop_todo.yml"
|
193
|
-
- ".travis.yml"
|
194
208
|
- Appraisals
|
195
209
|
- CHANGELOG.md
|
196
210
|
- Gemfile
|
@@ -199,12 +213,13 @@ files:
|
|
199
213
|
- README.md
|
200
214
|
- Rakefile
|
201
215
|
- active_data.gemspec
|
202
|
-
- gemfiles/rails.4.0.gemfile
|
203
|
-
- gemfiles/rails.4.1.gemfile
|
204
216
|
- gemfiles/rails.4.2.gemfile
|
205
217
|
- gemfiles/rails.5.0.gemfile
|
206
218
|
- gemfiles/rails.5.1.gemfile
|
207
219
|
- gemfiles/rails.5.2.gemfile
|
220
|
+
- gemfiles/rails.6.0.gemfile
|
221
|
+
- gemfiles/rails.6.1.gemfile
|
222
|
+
- gemfiles/rails.7.0.gemfile
|
208
223
|
- lib/active_data.rb
|
209
224
|
- lib/active_data/active_record/associations.rb
|
210
225
|
- lib/active_data/active_record/nested_attributes.rb
|
@@ -318,7 +333,7 @@ files:
|
|
318
333
|
homepage: ''
|
319
334
|
licenses: []
|
320
335
|
metadata: {}
|
321
|
-
post_install_message:
|
336
|
+
post_install_message:
|
322
337
|
rdoc_options: []
|
323
338
|
require_paths:
|
324
339
|
- lib
|
@@ -333,8 +348,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
348
|
- !ruby/object:Gem::Version
|
334
349
|
version: '0'
|
335
350
|
requirements: []
|
336
|
-
rubygems_version: 3.
|
337
|
-
signing_key:
|
351
|
+
rubygems_version: 3.1.4
|
352
|
+
signing_key:
|
338
353
|
specification_version: 4
|
339
354
|
summary: Working with hashes in AR style
|
340
355
|
test_files:
|
data/.travis.yml
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
|
3
|
-
rvm:
|
4
|
-
- 2.2.10
|
5
|
-
- 2.3.7
|
6
|
-
- 2.4.4
|
7
|
-
- rbx
|
8
|
-
|
9
|
-
gemfile:
|
10
|
-
- gemfiles/rails.4.0.gemfile
|
11
|
-
- gemfiles/rails.4.1.gemfile
|
12
|
-
- gemfiles/rails.4.2.gemfile
|
13
|
-
- gemfiles/rails.5.0.gemfile
|
14
|
-
- gemfiles/rails.5.1.gemfile
|
15
|
-
- gemfiles/rails.5.2.gemfile
|
16
|
-
|
17
|
-
matrix:
|
18
|
-
allow_failures:
|
19
|
-
- rvm: rbx
|
20
|
-
exclude:
|
21
|
-
- rvm: 2.4.4
|
22
|
-
gemfile: gemfiles/rails.4.0.gemfile
|
23
|
-
- rvm: 2.4.4
|
24
|
-
gemfile: gemfiles/rails.4.1.gemfile
|
25
|
-
- rvm: 2.4.4
|
26
|
-
gemfile: gemfiles/rails.4.2.gemfile
|
27
|
-
|
28
|
-
before_install:
|
29
|
-
- gem update --system --no-doc
|
30
|
-
|
31
|
-
script:
|
32
|
-
- bundle exec rspec
|
33
|
-
- bundle exec rubocop
|