active_type 2.4.1 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8646e74d05d6f4f22e9999a4146192223fbe1d93e480b9cf6e2a4ac14b29b098
4
- data.tar.gz: 6ab7306d8a5eddfef9f980d12fa9ae8eb9ba6f485b9c345cc88efd71968f6752
3
+ metadata.gz: f243c433c673eb72dc622d9315f8a68a33b788a4f20cb82a5b480dc82ccb73b9
4
+ data.tar.gz: f8f6b146776a25cfbcbb3acf8c9fafa46c22e68136ed23a9a004a75af0cf6e05
5
5
  SHA512:
6
- metadata.gz: efdbdf46333663b2970af1e116ae9cc86fc0c7b0b557d249bfc0742de51e9dd173059d88d545d49ef9ff7916cee783b37d18ae7faae7e45870938b375690d381
7
- data.tar.gz: cf1fe6ca9eb6921b02a48081c7a2b319293f4816e9fde88ba3608fdcda53dd9e91c6ea798fd0f34caadae0a0818d57f0bc599c0212796c86ad1c8a1ed4b5dcc3
6
+ metadata.gz: e4035273c367cb091908f5ad2db1949970e8e323b72629580a11e8309f48aa5ec4eb45e54a7e0c0896cf508c394ac6a0e72b51dc059a1b644751c400964f8319
7
+ data.tar.gz: 9b79ccb1b3bbdc6dd0ad6c0cec7254a5ed41f18d41020a5c774a021eb898fe721fe3c7918b73253ac88689c54a1430b74f56babc1f40aaad5a705ccf81e55424
@@ -28,6 +28,10 @@ jobs:
28
28
  gemfile: Gemfile.7.0.sqlite3
29
29
  - ruby: "3.2.0"
30
30
  gemfile: Gemfile.7.0.sqlite3
31
+ - ruby: "3.2.0"
32
+ gemfile: Gemfile.7.1.sqlite3
33
+ - ruby: "3.2.0"
34
+ gemfile: Gemfile.7.2.sqlite3
31
35
  env:
32
36
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
33
37
 
@@ -87,6 +91,7 @@ jobs:
87
91
  image: postgres
88
92
  env:
89
93
  POSTGRES_PASSWORD: postgres
94
+ POSTGRES_DB: active_type_test
90
95
  options: >-
91
96
  --health-cmd pg_isready
92
97
  --health-interval 10s
@@ -111,21 +116,19 @@ jobs:
111
116
  gemfile: Gemfile.7.0.pg
112
117
  - ruby: "3.2.0"
113
118
  gemfile: Gemfile.7.0.pg
119
+ - ruby: "3.2.0"
120
+ gemfile: Gemfile.7.1.pg
121
+ - ruby: "3.2.0"
122
+ gemfile: Gemfile.7.2.pg
114
123
  env:
115
124
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
116
125
 
117
126
  steps:
118
127
  - uses: actions/checkout@v3
119
- - name: Install database client
120
- run: |
121
- sudo apt-get install -y postgresql-client
122
128
  - name: Install ruby
123
129
  uses: ruby/setup-ruby@v1
124
130
  with:
125
131
  ruby-version: ${{ matrix.ruby }}
126
132
  bundler-cache: true
127
- - name: Setup databases
128
- run: |
129
- PGPASSWORD=postgres psql -c 'create database active_type_test;' -U postgres -p 5432 -h localhost
130
133
  - name: Run tests
131
134
  run: bundle exec rake spec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0
1
+ 3.2
data/CHANGELOG.md CHANGED
@@ -2,11 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 2.5.1 (2024-08-14)
6
+
7
+ * Fixed: Make `ActiveType::Object` work on Rails 7.2.
8
+
9
+ ## 2.5.0 (2024-02-29)
10
+
11
+ * Passing unfrozen objects as a default for an attribute is deprecated, since these objects might be shared between records.
12
+
5
13
  ## 2.4.1 (2024-01-08)
6
14
 
7
15
  * Fixed: Calling `#attributes` on the base record after a cast works now and does not throw a `MutationAfterCastError`
8
16
 
9
17
  ## 2.4.0 (2023-12-22)
18
+
10
19
  * Added: You can implement an `#after_cast` that is called with the original record when calling `ActiveType.cast`.
11
20
  Thanks to @MaximilianoGarciaRoe.
12
21
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
data/Gemfile.5.2.pg.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
data/Gemfile.6.1.pg.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
data/Gemfile.7.0.pg.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (2.4.1)
4
+ active_type (2.5.1)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
data/Gemfile.7.1.pg ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~>7.1.0'
4
+ gem 'rspec', '~>3.4'
5
+ gem 'pg'
6
+ gem 'rake'
7
+ gem 'gemika'
8
+
9
+ gem 'active_type', :path => '.'
@@ -0,0 +1,68 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ active_type (2.5.1)
5
+ activerecord (>= 3.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (7.1.3.4)
11
+ activesupport (= 7.1.3.4)
12
+ activerecord (7.1.3.4)
13
+ activemodel (= 7.1.3.4)
14
+ activesupport (= 7.1.3.4)
15
+ timeout (>= 0.4.0)
16
+ activesupport (7.1.3.4)
17
+ base64
18
+ bigdecimal
19
+ concurrent-ruby (~> 1.0, >= 1.0.2)
20
+ connection_pool (>= 2.2.5)
21
+ drb
22
+ i18n (>= 1.6, < 2)
23
+ minitest (>= 5.1)
24
+ mutex_m
25
+ tzinfo (~> 2.0)
26
+ base64 (0.2.0)
27
+ bigdecimal (3.1.8)
28
+ concurrent-ruby (1.3.4)
29
+ connection_pool (2.4.1)
30
+ diff-lcs (1.5.1)
31
+ drb (2.2.1)
32
+ gemika (0.8.3)
33
+ i18n (1.14.5)
34
+ concurrent-ruby (~> 1.0)
35
+ minitest (5.24.1)
36
+ mutex_m (0.2.0)
37
+ pg (1.5.7)
38
+ rake (13.2.1)
39
+ rspec (3.13.0)
40
+ rspec-core (~> 3.13.0)
41
+ rspec-expectations (~> 3.13.0)
42
+ rspec-mocks (~> 3.13.0)
43
+ rspec-core (3.13.0)
44
+ rspec-support (~> 3.13.0)
45
+ rspec-expectations (3.13.1)
46
+ diff-lcs (>= 1.2.0, < 2.0)
47
+ rspec-support (~> 3.13.0)
48
+ rspec-mocks (3.13.1)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.13.0)
51
+ rspec-support (3.13.1)
52
+ timeout (0.4.1)
53
+ tzinfo (2.0.6)
54
+ concurrent-ruby (~> 1.0)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ active_type!
61
+ activerecord (~> 7.1.0)
62
+ gemika
63
+ pg
64
+ rake
65
+ rspec (~> 3.4)
66
+
67
+ BUNDLED WITH
68
+ 2.5.6
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~>7.1.0'
4
+ gem 'rspec', '~>3.4'
5
+ gem 'sqlite3', '=1.6.0'
6
+ gem 'rake'
7
+ gem 'gemika'
8
+
9
+ gem 'active_type', :path => '.'
@@ -0,0 +1,70 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ active_type (2.5.1)
5
+ activerecord (>= 3.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (7.1.3.4)
11
+ activesupport (= 7.1.3.4)
12
+ activerecord (7.1.3.4)
13
+ activemodel (= 7.1.3.4)
14
+ activesupport (= 7.1.3.4)
15
+ timeout (>= 0.4.0)
16
+ activesupport (7.1.3.4)
17
+ base64
18
+ bigdecimal
19
+ concurrent-ruby (~> 1.0, >= 1.0.2)
20
+ connection_pool (>= 2.2.5)
21
+ drb
22
+ i18n (>= 1.6, < 2)
23
+ minitest (>= 5.1)
24
+ mutex_m
25
+ tzinfo (~> 2.0)
26
+ base64 (0.2.0)
27
+ bigdecimal (3.1.8)
28
+ concurrent-ruby (1.3.4)
29
+ connection_pool (2.4.1)
30
+ diff-lcs (1.5.1)
31
+ drb (2.2.1)
32
+ gemika (0.8.3)
33
+ i18n (1.14.5)
34
+ concurrent-ruby (~> 1.0)
35
+ mini_portile2 (2.8.7)
36
+ minitest (5.24.1)
37
+ mutex_m (0.2.0)
38
+ rake (13.2.1)
39
+ rspec (3.13.0)
40
+ rspec-core (~> 3.13.0)
41
+ rspec-expectations (~> 3.13.0)
42
+ rspec-mocks (~> 3.13.0)
43
+ rspec-core (3.13.0)
44
+ rspec-support (~> 3.13.0)
45
+ rspec-expectations (3.13.1)
46
+ diff-lcs (>= 1.2.0, < 2.0)
47
+ rspec-support (~> 3.13.0)
48
+ rspec-mocks (3.13.1)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.13.0)
51
+ rspec-support (3.13.1)
52
+ sqlite3 (1.6.0)
53
+ mini_portile2 (~> 2.8.0)
54
+ timeout (0.4.1)
55
+ tzinfo (2.0.6)
56
+ concurrent-ruby (~> 1.0)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ active_type!
63
+ activerecord (~> 7.1.0)
64
+ gemika
65
+ rake
66
+ rspec (~> 3.4)
67
+ sqlite3 (= 1.6.0)
68
+
69
+ BUNDLED WITH
70
+ 2.5.6
data/Gemfile.7.2.pg ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~>7.2.0'
4
+ gem 'rspec', '~>3.4'
5
+ gem 'pg'
6
+ gem 'rake'
7
+ gem 'gemika'
8
+
9
+ gem 'active_type', :path => '.'
@@ -0,0 +1,70 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ active_type (2.5.1)
5
+ activerecord (>= 3.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (7.2.0)
11
+ activesupport (= 7.2.0)
12
+ activerecord (7.2.0)
13
+ activemodel (= 7.2.0)
14
+ activesupport (= 7.2.0)
15
+ timeout (>= 0.4.0)
16
+ activesupport (7.2.0)
17
+ base64
18
+ bigdecimal
19
+ concurrent-ruby (~> 1.0, >= 1.3.1)
20
+ connection_pool (>= 2.2.5)
21
+ drb
22
+ i18n (>= 1.6, < 2)
23
+ logger (>= 1.4.2)
24
+ minitest (>= 5.1)
25
+ securerandom (>= 0.3)
26
+ tzinfo (~> 2.0, >= 2.0.5)
27
+ base64 (0.2.0)
28
+ bigdecimal (3.1.8)
29
+ concurrent-ruby (1.3.4)
30
+ connection_pool (2.4.1)
31
+ diff-lcs (1.5.1)
32
+ drb (2.2.1)
33
+ gemika (0.8.3)
34
+ i18n (1.14.5)
35
+ concurrent-ruby (~> 1.0)
36
+ logger (1.6.0)
37
+ minitest (5.24.1)
38
+ pg (1.5.7)
39
+ rake (13.2.1)
40
+ rspec (3.13.0)
41
+ rspec-core (~> 3.13.0)
42
+ rspec-expectations (~> 3.13.0)
43
+ rspec-mocks (~> 3.13.0)
44
+ rspec-core (3.13.0)
45
+ rspec-support (~> 3.13.0)
46
+ rspec-expectations (3.13.1)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.13.0)
49
+ rspec-mocks (3.13.1)
50
+ diff-lcs (>= 1.2.0, < 2.0)
51
+ rspec-support (~> 3.13.0)
52
+ rspec-support (3.13.1)
53
+ securerandom (0.3.1)
54
+ timeout (0.4.1)
55
+ tzinfo (2.0.6)
56
+ concurrent-ruby (~> 1.0)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ active_type!
63
+ activerecord (~> 7.2.0)
64
+ gemika
65
+ pg
66
+ rake
67
+ rspec (~> 3.4)
68
+
69
+ BUNDLED WITH
70
+ 2.5.6
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~>7.2.0'
4
+ gem 'rspec', '~>3.4'
5
+ gem 'sqlite3', '=1.6.0'
6
+ gem 'rake'
7
+ gem 'gemika'
8
+
9
+ gem 'active_type', :path => '.'
@@ -0,0 +1,72 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ active_type (2.5.1)
5
+ activerecord (>= 3.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (7.2.0)
11
+ activesupport (= 7.2.0)
12
+ activerecord (7.2.0)
13
+ activemodel (= 7.2.0)
14
+ activesupport (= 7.2.0)
15
+ timeout (>= 0.4.0)
16
+ activesupport (7.2.0)
17
+ base64
18
+ bigdecimal
19
+ concurrent-ruby (~> 1.0, >= 1.3.1)
20
+ connection_pool (>= 2.2.5)
21
+ drb
22
+ i18n (>= 1.6, < 2)
23
+ logger (>= 1.4.2)
24
+ minitest (>= 5.1)
25
+ securerandom (>= 0.3)
26
+ tzinfo (~> 2.0, >= 2.0.5)
27
+ base64 (0.2.0)
28
+ bigdecimal (3.1.8)
29
+ concurrent-ruby (1.3.4)
30
+ connection_pool (2.4.1)
31
+ diff-lcs (1.5.1)
32
+ drb (2.2.1)
33
+ gemika (0.8.3)
34
+ i18n (1.14.5)
35
+ concurrent-ruby (~> 1.0)
36
+ logger (1.6.0)
37
+ mini_portile2 (2.8.7)
38
+ minitest (5.24.1)
39
+ rake (13.2.1)
40
+ rspec (3.13.0)
41
+ rspec-core (~> 3.13.0)
42
+ rspec-expectations (~> 3.13.0)
43
+ rspec-mocks (~> 3.13.0)
44
+ rspec-core (3.13.0)
45
+ rspec-support (~> 3.13.0)
46
+ rspec-expectations (3.13.1)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.13.0)
49
+ rspec-mocks (3.13.1)
50
+ diff-lcs (>= 1.2.0, < 2.0)
51
+ rspec-support (~> 3.13.0)
52
+ rspec-support (3.13.1)
53
+ securerandom (0.3.1)
54
+ sqlite3 (1.6.0)
55
+ mini_portile2 (~> 2.8.0)
56
+ timeout (0.4.1)
57
+ tzinfo (2.0.6)
58
+ concurrent-ruby (~> 1.0)
59
+
60
+ PLATFORMS
61
+ ruby
62
+
63
+ DEPENDENCIES
64
+ active_type!
65
+ activerecord (~> 7.2.0)
66
+ gemika
67
+ rake
68
+ rspec (~> 3.4)
69
+ sqlite3 (= 1.6.0)
70
+
71
+ BUNDLED WITH
72
+ 2.5.6
data/README.md CHANGED
@@ -381,12 +381,13 @@ sign_up.is_a?(SignUp) # => true
381
381
 
382
382
  If you need to add some special logic after casting you can add an `after_cast` method:
383
383
 
384
+ ```ruby
384
385
  class SignUp < ActiveType::Record[User]
385
386
  def after_cast(user)
386
387
  # Called with the original user upon casting.
387
388
  end
388
389
  end
389
-
390
+ ```
390
391
 
391
392
 
392
393
  Associations
@@ -395,7 +396,7 @@ Associations
395
396
  Sometimes, you have an association, and a form model for that association. Instead of always casting the associations manually, you can use the `change_association` macro to override an association's options. For example.
396
397
 
397
398
 
398
- ```
399
+ ```ruby
399
400
  class Credential < ActiveRecord::Base
400
401
  end
401
402
 
@@ -132,6 +132,10 @@ module ActiveType
132
132
  @connection ||= DummyConnection.new(nil)
133
133
  end
134
134
 
135
+ def with_connection(**)
136
+ yield(connection)
137
+ end
138
+
135
139
  def destroy(*)
136
140
  new
137
141
  end
@@ -148,6 +152,13 @@ module ActiveType
148
152
  []
149
153
  end
150
154
 
155
+ def cached_find_by(*)
156
+ nil
157
+ end
158
+
159
+ def schema_cache
160
+ DummySchemaCache.new
161
+ end
151
162
  end
152
163
 
153
164
  def destroy
@@ -28,6 +28,10 @@ module ActiveType
28
28
  original_attributes.key?(key)
29
29
  end
30
30
 
31
+ def keys
32
+ original_attributes.keys
33
+ end
34
+
31
35
  def method_missing(*args)
32
36
  raise MutationAfterCastError, 'Changing a record that has been used to create an ActiveType::Record could have unexpected side effects!'
33
37
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveType
2
- VERSION = '2.4.1'
2
+ VERSION = '2.5.1'
3
3
  end
@@ -54,6 +54,7 @@ module ActiveType
54
54
  def build(name, type, options)
55
55
  validate_attribute_name!(name)
56
56
  options.assert_valid_keys(:default)
57
+ deprecate_non_frozen_defaults(options[:default], name)
57
58
  add_virtual_column(name, type, options)
58
59
  build_reader(name)
59
60
  build_writer(name)
@@ -68,6 +69,12 @@ module ActiveType
68
69
  @owner.virtual_columns_hash = @owner.virtual_columns_hash.merge(name.to_s => column)
69
70
  end
70
71
 
72
+ def deprecate_non_frozen_defaults(default, name)
73
+ unless default.respond_to?(:call) || default.frozen?
74
+ ActiveType.deprecator.warn("##{name}: Passing a non-frozen object as a default is deprecated. Mutating the attribute can change the default for other records. You can also wrap it in a proc.", caller_locations(3))
75
+ end
76
+ end
77
+
71
78
  def build_reader(name)
72
79
  @module.module_eval <<-BODY, __FILE__, __LINE__ + 1
73
80
  def #{name}
data/lib/active_type.rb CHANGED
@@ -21,4 +21,8 @@ module ActiveType
21
21
  # Make Util methods available under the `ActiveType` namespace
22
22
  # like `ActiveType.cast(...)`
23
23
  extend Util
24
+
25
+ def self.deprecator
26
+ @deprecator ||= ActiveSupport::Deprecation.new
27
+ end
24
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_type
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Kraze
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-01-08 00:00:00.000000000 Z
12
+ date: 2024-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -81,6 +81,14 @@ files:
81
81
  - Gemfile.7.0.pg.lock
82
82
  - Gemfile.7.0.sqlite3
83
83
  - Gemfile.7.0.sqlite3.lock
84
+ - Gemfile.7.1.pg
85
+ - Gemfile.7.1.pg.lock
86
+ - Gemfile.7.1.sqlite3
87
+ - Gemfile.7.1.sqlite3.lock
88
+ - Gemfile.7.2.pg
89
+ - Gemfile.7.2.pg.lock
90
+ - Gemfile.7.2.sqlite3
91
+ - Gemfile.7.2.sqlite3.lock
84
92
  - Gemfile.lock
85
93
  - LICENSE
86
94
  - README.md
@@ -128,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
136
  - !ruby/object:Gem::Version
129
137
  version: '0'
130
138
  requirements: []
131
- rubygems_version: 3.2.33
139
+ rubygems_version: 3.4.10
132
140
  signing_key:
133
141
  specification_version: 4
134
142
  summary: Make any Ruby object quack like ActiveRecord