active_type 1.4.2 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc8f689fdb28d28edb7fc550d21e0c9d4810f298da570e9e8dc223a028c09dc1
4
- data.tar.gz: 7f41ea5cd75b455190740c263f836d42cd268e0ab15e3143c9c8dfedb21e0b04
3
+ metadata.gz: 4b89a8dd55842409c9f14b641fcb0d6efa2f090cb4c01507f72ff5f77bd415af
4
+ data.tar.gz: 48bcc880f21b98af413ff99f53a980d435b06cf07397c7487d7a3f8d3599cee8
5
5
  SHA512:
6
- metadata.gz: da0b114cb9f97509bc8becad66a553538cbb362d07f9c8a6f1f17d7298282c302a83f477669110fd564f269b9dda5c2a009df41d40990a030044b90be869b03e
7
- data.tar.gz: a9c59ed853ad1972ffd1d13d73eb452945f7c882bff1bc0dec49dec26a4b59c726b14381dd7a75f3905f0a5052906d027e8f500910e9b0395e6bc6a076639193
6
+ metadata.gz: 8a6dff5a37816e2e71dd66f1300354cc7989aabc7cdd1ea188290a91b2957c1589231631bf1a36598d5dc9bbff76648be4dd71e59958fe3de8d3f9d9acabdc7c
7
+ data.tar.gz: 7a75c3faaf91db7326f6147375c08f334f776b24720caf44370e2b197d857213204c4a3d94993ad53cfb083181ed508ce6edf266fbbbaabe49acbe2393acd57f
@@ -0,0 +1,181 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test_sqlite:
11
+ runs-on: ubuntu-20.04
12
+
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ ruby:
17
+ - "2.3.8"
18
+ - "2.4.6"
19
+ - "2.5.5"
20
+ - "2.6.3"
21
+ gemfile:
22
+ - Gemfile.3.2.sqlite3
23
+ - Gemfile.4.2.sqlite3
24
+ - Gemfile.5.2.sqlite3
25
+ exclude:
26
+ - ruby: "2.4.6"
27
+ gemfile: Gemfile.3.2.sqlite3
28
+ - ruby: "2.5.5"
29
+ gemfile: Gemfile.3.2.sqlite3
30
+ - ruby: "2.5.5"
31
+ gemfile: Gemfile.4.2.sqlite3
32
+ - ruby: "2.6.3"
33
+ gemfile: Gemfile.3.2.sqlite3
34
+ - ruby: "2.6.3"
35
+ gemfile: Gemfile.4.2.sqlite3
36
+
37
+ env:
38
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
39
+
40
+ steps:
41
+ - uses: actions/checkout@v2
42
+ - name: Install ruby
43
+ uses: ruby/setup-ruby@v1
44
+ with:
45
+ ruby-version: ${{ matrix.ruby }}
46
+ - name: Bundle
47
+ run: |
48
+ gem install bundler:2.0.2
49
+ bundle install --no-deployment
50
+ - name: Run tests
51
+ run: bundle exec rake spec
52
+
53
+
54
+ test_mysql:
55
+ runs-on: ubuntu-20.04
56
+
57
+ services:
58
+ mysql:
59
+ image: mysql:5.6
60
+ env:
61
+ MYSQL_ROOT_PASSWORD: password
62
+ ports:
63
+ - 3306:3306
64
+ options: >-
65
+ --health-cmd="mysqladmin ping"
66
+ --health-interval=10s
67
+ --health-timeout=5s
68
+ --health-retries=3
69
+
70
+ strategy:
71
+ fail-fast: false
72
+ matrix:
73
+ ruby:
74
+ - "2.3.8"
75
+ - "2.4.6"
76
+ - "2.5.5"
77
+ - "2.6.3"
78
+ gemfile:
79
+ - Gemfile.3.2.mysql2
80
+ - Gemfile.4.2.mysql2
81
+ - Gemfile.5.2.mysql2
82
+ exclude:
83
+ - ruby: "2.4.6"
84
+ gemfile: Gemfile.3.2.mysql2
85
+ - ruby: "2.4.6"
86
+ gemfile: Gemfile.4.2.mysql2
87
+ - ruby: "2.4.6"
88
+ gemfile: Gemfile.5.2.mysql2
89
+ - ruby: "2.5.5"
90
+ gemfile: Gemfile.3.2.mysql2
91
+ - ruby: "2.5.5"
92
+ gemfile: Gemfile.4.2.mysql2
93
+ - ruby: "2.5.5"
94
+ gemfile: Gemfile.5.2.mysql2
95
+ - ruby: "2.6.3"
96
+ gemfile: Gemfile.3.2.mysql2
97
+ - ruby: "2.6.3"
98
+ gemfile: Gemfile.4.2.mysql2
99
+
100
+ env:
101
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
102
+
103
+ steps:
104
+ - uses: actions/checkout@v2
105
+ - name: Install ruby
106
+ uses: ruby/setup-ruby@v1
107
+ with:
108
+ ruby-version: ${{ matrix.ruby }}
109
+ - name: Install database client
110
+ run: |
111
+ sudo apt-get update
112
+ sudo apt-get install -y mysql-client libmariadbclient-dev
113
+ - name: Bundle
114
+ run: |
115
+ gem install bundler:2.0.2
116
+ bundle install --no-deployment
117
+ - name: Setup databases
118
+ run: |
119
+ mysql -e 'create database IF NOT EXISTS active_type_test;' -u root --password=password -P 3306 -h 127.0.0.1
120
+ - name: Run tests
121
+ run: bundle exec rake spec
122
+
123
+
124
+ test_pg:
125
+ runs-on: ubuntu-20.04
126
+
127
+ services:
128
+ postgres:
129
+ image: postgres
130
+ env:
131
+ POSTGRES_PASSWORD: postgres
132
+ options: >-
133
+ --health-cmd pg_isready
134
+ --health-interval 10s
135
+ --health-timeout 5s
136
+ --health-retries 5
137
+ ports:
138
+ - 5432:5432
139
+
140
+ strategy:
141
+ fail-fast: false
142
+ matrix:
143
+ ruby:
144
+ - "2.3.8"
145
+ - "2.5.5"
146
+ - "2.6.3"
147
+ gemfile:
148
+ - Gemfile.4.2.pg
149
+ - Gemfile.5.2.pg
150
+ - Gemfile.6.0.pg
151
+ exclude:
152
+ - ruby: "2.3.8"
153
+ gemfile: Gemfile.6.0.pg
154
+ - ruby: "2.5.5"
155
+ gemfile: Gemfile.4.2.pg
156
+ - ruby: "2.5.5"
157
+ gemfile: Gemfile.5.2.pg
158
+ - ruby: "2.6.3"
159
+ gemfile: Gemfile.4.2.pg
160
+
161
+ env:
162
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
163
+
164
+ steps:
165
+ - uses: actions/checkout@v2
166
+ - name: Install ruby
167
+ uses: ruby/setup-ruby@v1
168
+ with:
169
+ ruby-version: ${{ matrix.ruby }}
170
+ - name: Install database client
171
+ run: |
172
+ sudo apt-get install -y postgresql-client
173
+ - name: Bundle
174
+ run: |
175
+ gem install bundler:2.0.2
176
+ bundle install --no-deployment
177
+ - name: Setup databases
178
+ run: |
179
+ PGPASSWORD=postgres psql -c 'create database active_type_test;' -U postgres -p 5432 -h localhost
180
+ - name: Run tests
181
+ run: bundle exec rake spec
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## Unreleased changes
6
6
 
7
+ ## 1.5.0 (2020-11-06)
8
+
9
+ * Added: When serializing/deserializing `ActiveType::Record` or `ActiveType::Object` with YAML, virtual attributes are restored.
10
+ Credits to @chriscz.
11
+
7
12
  ## 1.4.2 (2020-09-17)
8
13
 
9
14
  * Fixed: Assigning values to virtual attributes through internal setter methods (e.g. `_write_attribute`) no longer results in "can't write unknown attribute" errors.
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 3.2.22.5'
4
4
  gem 'rspec', '~> 3.4'
5
- gem 'mysql2', '= 0.3.17'
5
+ gem 'mysql2', git: 'https://github.com/makandra/mysql2', branch: '0.3.x-lts'
6
6
  gem 'rake'
7
7
  gem 'gemika'
8
8
 
@@ -1,7 +1,14 @@
1
+ GIT
2
+ remote: https://github.com/makandra/mysql2
3
+ revision: c920d41e43c4722d4c065d2ea9d21494c560bd85
4
+ branch: 0.3.x-lts
5
+ specs:
6
+ mysql2 (0.3.21)
7
+
1
8
  PATH
2
9
  remote: .
3
10
  specs:
4
- active_type (1.4.2)
11
+ active_type (1.5.0)
5
12
  activerecord (>= 3.2)
6
13
 
7
14
  GEM
@@ -21,10 +28,9 @@ GEM
21
28
  arel (3.0.3)
22
29
  builder (3.0.4)
23
30
  diff-lcs (1.2.5)
24
- gemika (0.3.4)
31
+ gemika (0.4.1)
25
32
  i18n (0.6.11)
26
33
  multi_json (1.13.1)
27
- mysql2 (0.3.17)
28
34
  rake (10.4.2)
29
35
  rspec (3.4.0)
30
36
  rspec-core (~> 3.4.0)
@@ -49,7 +55,7 @@ DEPENDENCIES
49
55
  activerecord (~> 3.2.22.5)
50
56
  gemika
51
57
  i18n (= 0.6.11)
52
- mysql2 (= 0.3.17)
58
+ mysql2!
53
59
  rake
54
60
  rspec (~> 3.4)
55
61
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -21,7 +21,7 @@ GEM
21
21
  arel (3.0.3)
22
22
  builder (3.0.4)
23
23
  diff-lcs (1.2.5)
24
- gemika (0.3.4)
24
+ gemika (0.4.1)
25
25
  i18n (0.6.11)
26
26
  multi_json (1.13.1)
27
27
  rake (10.4.2)
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~>4.2.1'
4
4
  gem 'rspec', '~>3.4'
5
- gem 'mysql2', '~> 0.3.17'
5
+ gem 'mysql2'
6
6
  gem 'rake'
7
7
  gem 'gemika'
8
8
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -23,11 +23,11 @@ GEM
23
23
  builder (3.2.3)
24
24
  concurrent-ruby (1.1.4)
25
25
  diff-lcs (1.2.5)
26
- gemika (0.3.4)
26
+ gemika (0.4.1)
27
27
  i18n (0.9.5)
28
28
  concurrent-ruby (~> 1.0)
29
29
  minitest (5.11.3)
30
- mysql2 (0.3.20)
30
+ mysql2 (0.5.3)
31
31
  rake (10.4.2)
32
32
  rspec (3.4.0)
33
33
  rspec-core (~> 3.4.0)
@@ -53,7 +53,7 @@ DEPENDENCIES
53
53
  active_type!
54
54
  activerecord (~> 4.2.1)
55
55
  gemika
56
- mysql2 (~> 0.3.17)
56
+ mysql2
57
57
  rake
58
58
  rspec (~> 3.4)
59
59
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -23,7 +23,7 @@ GEM
23
23
  builder (3.2.3)
24
24
  concurrent-ruby (1.1.4)
25
25
  diff-lcs (1.2.5)
26
- gemika (0.3.4)
26
+ gemika (0.4.1)
27
27
  i18n (0.9.5)
28
28
  concurrent-ruby (~> 1.0)
29
29
  minitest (5.11.3)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -23,7 +23,7 @@ GEM
23
23
  builder (3.2.3)
24
24
  concurrent-ruby (1.1.4)
25
25
  diff-lcs (1.2.5)
26
- gemika (0.3.4)
26
+ gemika (0.4.1)
27
27
  i18n (0.9.5)
28
28
  concurrent-ruby (~> 1.0)
29
29
  minitest (5.11.3)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -21,11 +21,11 @@ GEM
21
21
  arel (8.0.0)
22
22
  concurrent-ruby (1.1.4)
23
23
  diff-lcs (1.3)
24
- gemika (0.3.4)
24
+ gemika (0.4.1)
25
25
  i18n (1.5.3)
26
26
  concurrent-ruby (~> 1.0)
27
27
  minitest (5.11.3)
28
- mysql2 (0.4.6)
28
+ mysql2 (0.5.3)
29
29
  rake (12.0.0)
30
30
  rspec (3.6.0)
31
31
  rspec-core (~> 3.6.0)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -21,7 +21,7 @@ GEM
21
21
  arel (8.0.0)
22
22
  concurrent-ruby (1.1.4)
23
23
  diff-lcs (1.3)
24
- gemika (0.3.4)
24
+ gemika (0.4.1)
25
25
  i18n (1.5.3)
26
26
  concurrent-ruby (~> 1.0)
27
27
  minitest (5.11.3)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -21,7 +21,7 @@ GEM
21
21
  arel (8.0.0)
22
22
  concurrent-ruby (1.1.4)
23
23
  diff-lcs (1.3)
24
- gemika (0.3.4)
24
+ gemika (0.4.1)
25
25
  i18n (1.5.3)
26
26
  concurrent-ruby (~> 1.0)
27
27
  minitest (5.11.3)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_type (1.4.2)
4
+ active_type (1.5.0)
5
5
  activerecord (>= 3.2)
6
6
 
7
7
  GEM
@@ -20,7 +20,7 @@ GEM
20
20
  zeitwerk (~> 2.1, >= 2.1.8)
21
21
  concurrent-ruby (1.1.5)
22
22
  diff-lcs (1.3)
23
- gemika (0.3.4)
23
+ gemika (0.4.1)
24
24
  i18n (1.6.0)
25
25
  concurrent-ruby (~> 1.0)
26
26
  minitest (5.11.3)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ActiveType [![Build Status](https://travis-ci.org/makandra/active_type.svg?branch=master)](https://travis-ci.org/makandra/active_type)
1
+ ActiveType [![Tests](https://github.com/makandra/active_type/workflows/Tests/badge.svg)](https://github.com/makandra/active_type/actions)
2
2
  ==========
3
3
 
4
4
  Make any Ruby object quack like ActiveRecord
@@ -1,3 +1,3 @@
1
1
  module ActiveType
2
- VERSION = '1.4.2'
2
+ VERSION = '1.5.0'
3
3
  end
@@ -8,6 +8,23 @@ module ActiveType
8
8
 
9
9
  module VirtualAttributes
10
10
 
11
+ module Serialization
12
+ extend ActiveSupport::Concern
13
+
14
+ def init_with(coder)
15
+ if coder['virtual_attributes'].present?
16
+ @virtual_attributes = coder['virtual_attributes']
17
+ end
18
+ super(coder)
19
+ end
20
+
21
+ def encode_with(coder)
22
+ coder['virtual_attributes'] = @virtual_attributes
23
+ coder['active_type_yaml_version'] = 1
24
+ super(coder)
25
+ end
26
+ end
27
+
11
28
  class VirtualColumn
12
29
 
13
30
  def initialize(name, type_caster, options)
@@ -110,10 +127,10 @@ module ActiveType
110
127
  result
111
128
  end
112
129
 
113
-
114
130
  extend ActiveSupport::Concern
115
131
 
116
132
  included do
133
+ include ActiveType::VirtualAttributes::Serialization
117
134
  class_attribute :virtual_columns_hash
118
135
  self.virtual_columns_hash = {}
119
136
 
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: 1.4.2
4
+ version: 1.5.0
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: 2020-09-17 00:00:00.000000000 Z
12
+ date: 2020-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -59,6 +59,7 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - ".github/workflows/test.yml"
62
63
  - ".gitignore"
63
64
  - ".rspec"
64
65
  - ".ruby-version"
@@ -123,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  - !ruby/object:Gem::Version
124
125
  version: '0'
125
126
  requirements: []
126
- rubygems_version: 3.0.3
127
+ rubygems_version: 3.1.4
127
128
  signing_key:
128
129
  specification_version: 4
129
130
  summary: Make any Ruby object quack like ActiveRecord