active_type 1.4.2 → 1.5.0

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: 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