activerecord-typedstore 0.4.4 → 0.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
  SHA1:
3
- metadata.gz: 805a07504ab5ed0b6a41983d945f5a0bdd649726
4
- data.tar.gz: c09ffc9348aa4256c439645b7d36edb0b3951705
3
+ metadata.gz: 840c3646ef834da4bfeb760ae59a440136a09b84
4
+ data.tar.gz: 25cf44e8833ff79e3870b66361ccdfc2f7913cf5
5
5
  SHA512:
6
- metadata.gz: 2c033c463261169f42b5ab7e1a4c0dade01d101c1f084695124b5e018131bbce84a389b34bfc9aedeec224383def213cd6cf4c78b609d820cffbf8fd1cdaf695
7
- data.tar.gz: 6ed412a72266d529d32401c6ef99a7bfc85fd5d38cf7716f8e44035cc1b1250099b67e3aa9e153a5eab1e97e4a2669fa1f7596fa2fb271aa1404274fabf94020
6
+ metadata.gz: a9af2dc153df0bf781a9afbe9053a0246b76a2b0a60d2ab333d1113ce5b3ad68e127c2ab2c9e706d0a9d4c0446fc051d3c82f32a5d22506066425f8627e1e225
7
+ data.tar.gz: a439fda466092a2a33750859e7387017b5db9a253eb17ec64d373899425b48c0b3d444c7c21656852c31f4d44bd241b31ca80bbf5d5e59a13d03f9c1978988c2
data/.travis.yml CHANGED
@@ -1,21 +1,34 @@
1
+ language: ruby
2
+
1
3
  rvm:
2
- - 1.9.3
3
- - 2.0.0
4
- - 2.1.0
5
- - 2.1.1
4
+ - 1.9
5
+ - 2.0
6
+ - 2.1
6
7
  gemfile:
7
8
  - gemfiles/Gemfile.ar-3.2
8
9
  - gemfiles/Gemfile.ar-4.0
9
10
  - gemfiles/Gemfile.ar-4.1
11
+ - gemfiles/Gemfile.ar-4.2
10
12
  - gemfiles/Gemfile.ar-edge
11
13
 
14
+ env:
15
+ - TIMEZONE_AWARE=1 POSTGRES=1 MYSQL=1
16
+ - TIMEZONE_AWARE=0 POSTGRES=1 MYSQL=1
17
+
18
+ addons:
19
+ postgresql: 9.3
20
+
21
+ sudo: false
22
+
12
23
  before_script:
13
24
  - mysql -e 'create database typed_store_test;'
14
-
15
- env:
16
- - TIMEZONE_AWARE=1 POSTGRES=1 MYSQL=1 POSTGRES_URL=$(curl http://api.postgression.com)
17
- - TIMEZONE_AWARE=0 POSTGRES=1 MYSQL=1 POSTGRES_URL=$(curl http://api.postgression.com)
25
+ - psql -c 'create database typed_store_test;' -U postgres
18
26
 
19
27
  matrix:
20
28
  allow_failures:
21
29
  - gemfile: gemfiles/Gemfile.ar-edge
30
+ exclude:
31
+ - gemfile: gemfiles/Gemfile.ar-edge
32
+ rvm: 1.9
33
+ - gemfile: gemfiles/Gemfile.ar-edge
34
+ rvm: 2.0
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Jean Boussier']
10
10
  spec.email = ['jean.boussier@gmail.com']
11
11
  spec.description = %q{ActiveRecord::Store but with type definition}
12
- spec.summary = %q{ActiveRecord::Store but with type definition}
12
+ spec.summary = %q{Add type casting and full method attributes support to RctiveRecord store}
13
13
  spec.homepage = 'https://github.com/byroot/activerecord-typedstore'
14
14
  spec.license = 'MIT'
15
15
 
@@ -18,14 +18,14 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activerecord', '>= 3.2'
21
+ spec.add_dependency 'activerecord', '>= 3.2', '< 5'
22
22
 
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
- spec.add_development_dependency 'rake'
25
- spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'coveralls'
27
- spec.add_development_dependency 'sqlite3'
28
- spec.add_development_dependency 'pg'
29
- spec.add_development_dependency 'mysql2'
30
- spec.add_development_dependency 'database_cleaner'
24
+ spec.add_development_dependency 'rake', '~> 0'
25
+ spec.add_development_dependency 'rspec', '~> 0'
26
+ spec.add_development_dependency 'coveralls', '~> 0'
27
+ spec.add_development_dependency 'sqlite3', '~> 0'
28
+ spec.add_development_dependency 'pg', '~> 0'
29
+ spec.add_development_dependency 'mysql2', '~> 0'
30
+ spec.add_development_dependency 'database_cleaner', '~> 0'
31
31
  end
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '~> 4.1.0.beta1'
3
+ gem 'activerecord', '~> 4.1.0'
4
4
  gem 'bundler', '~> 1.3'
5
5
  gem 'rake'
6
6
  gem 'rspec'
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 4.2.0-rc2'
4
+ gem 'bundler', '~> 1.3'
5
+ gem 'rake'
6
+ gem 'rspec'
7
+ gem 'sqlite3'
8
+ gem 'pg', '~> 0.11'
9
+ gem 'mysql2'
10
+ gem 'database_cleaner'
11
+ gem 'coveralls', require: false
@@ -29,7 +29,8 @@ module ActiveRecord::TypedStore
29
29
 
30
30
  def extract_default(value)
31
31
  return value if (type == :string || type == :text) && value.nil?
32
- super
32
+
33
+ type_cast(value)
33
34
  end
34
35
 
35
36
  def type_cast(value, map=true)
@@ -46,9 +47,37 @@ module ActiveRecord::TypedStore
46
47
  return super(value.iso8601)
47
48
  end
48
49
 
49
- super(value)
50
+ defined?(super) ? super(value) : type_cast_from_database(value)
50
51
  end
51
52
 
52
53
  end
53
54
 
55
+ if defined? ::ActiveRecord::Type
56
+ BaseColumn = remove_const(:Column)
57
+
58
+ class DecimalType < ::ActiveRecord::Type::Decimal
59
+ def type_cast_from_database(value)
60
+ value = value.to_s if value.is_a?(Float)
61
+ super(value)
62
+ end
63
+ end
64
+
65
+ class Column < BaseColumn
66
+ CAST_TYPES = {
67
+ boolean: ::ActiveRecord::Type::Boolean,
68
+ integer: ::ActiveRecord::Type::Integer,
69
+ string: ::ActiveRecord::Type::String,
70
+ float: ::ActiveRecord::Type::Float,
71
+ date: ::ActiveRecord::Type::Date,
72
+ datetime: ::ActiveRecord::Type::DateTime,
73
+ decimal: DecimalType,
74
+ any: ::ActiveRecord::Type::Value,
75
+ }
76
+
77
+ def initialize(_, type, *)
78
+ @cast_type = CAST_TYPES.fetch(type).new
79
+ super
80
+ end
81
+ end
82
+ end
54
83
  end
@@ -5,7 +5,8 @@ require 'active_record/typed_store/typed_hash'
5
5
  module ActiveRecord::TypedStore
6
6
  AR_VERSION = Gem::Version.new(ActiveRecord::VERSION::STRING)
7
7
  IS_AR_3_2 = AR_VERSION < Gem::Version.new('4.0')
8
- IS_AR_4_1 = AR_VERSION >= Gem::Version.new('4.1.0.beta')
8
+ IS_AR_4_1 = AR_VERSION >= Gem::Version.new('4.1') && AR_VERSION < Gem::Version.new('4.2.0-rc1')
9
+ IS_AR_4_2 = AR_VERSION >= Gem::Version.new('4.2.0-rc1')
9
10
 
10
11
  module Extension
11
12
  extend ActiveSupport::Concern
@@ -92,6 +93,18 @@ module ActiveRecord::TypedStore
92
93
 
93
94
  protected
94
95
 
96
+ if IS_AR_4_2
97
+ def attribute_method?(attr_name)
98
+ super || store_attribute_method?(attr_name)
99
+ end
100
+ end
101
+
102
+ def store_attribute_method?(attr_name)
103
+ return unless self.class.typed_store_attributes
104
+ store_attribute = self.class.typed_store_attributes[attr_name]
105
+ store_attribute && store_attribute.accessor?
106
+ end
107
+
95
108
  def write_store_attribute(store_attribute, key, value)
96
109
  column = store_column(store_attribute, key)
97
110
  if column.try(:type) == :datetime && self.class.time_zone_aware_attributes && value.respond_to?(:in_time_zone)
@@ -106,8 +119,27 @@ module ActiveRecord::TypedStore
106
119
 
107
120
  private
108
121
 
122
+ if IS_AR_4_2
123
+ def match_attribute_method?(method_name)
124
+ match = super
125
+ return unless match
126
+ return if match.target == 'attribute_before_type_cast'.freeze && store_attribute_method?(match.attr_name)
127
+ match
128
+ end
129
+
130
+ def coder_for(attr_name)
131
+ column = self.class.columns_hash[attr_name]
132
+ return unless column.cast_type.is_a?(::ActiveRecord::Type::Serialized)
133
+ column.cast_type.coder
134
+ end
135
+ else
136
+ def coder_for(attr_name)
137
+ self.class.serialized_attributes[attr_name]
138
+ end
139
+ end
140
+
109
141
  def write_attribute(attr_name, value)
110
- if coder = self.class.serialized_attributes[attr_name]
142
+ if coder = coder_for(attr_name)
111
143
  if coder.is_a?(ActiveRecord::TypedStore::Coder)
112
144
  return super(attr_name, coder.as_indifferent_hash(value))
113
145
  end
@@ -116,6 +148,10 @@ module ActiveRecord::TypedStore
116
148
  super
117
149
  end
118
150
 
151
+ def keys_for_partial_write
152
+ super & self.class.column_names
153
+ end
154
+
119
155
  def store_column(store_attribute, key)
120
156
  store = store_columns(store_attribute)
121
157
  store && store[key]
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module TypedStore
3
- VERSION = '0.4.4'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -58,11 +58,20 @@ shared_examples 'any model' do
58
58
  }.to change { model.age_changed? }.from(true).to(false)
59
59
  end
60
60
 
61
- it 'can be reset individually' do
62
- model.age = 24
63
- expect {
64
- model.reset_age!
65
- }.to change { model.age }.from(24).to(12)
61
+ if AR_VERSION >= AR_4_2
62
+ it 'can be restored individually' do
63
+ model.age = 24
64
+ expect {
65
+ model.restore_age!
66
+ }.to change { model.age }.from(24).to(12)
67
+ end
68
+ else
69
+ it 'can be reset individually' do
70
+ model.age = 24
71
+ expect {
72
+ model.reset_age!
73
+ }.to change { model.age }.from(24).to(12)
74
+ end
66
75
  end
67
76
 
68
77
  it 'does not dirty track assigning the same boolean' do
@@ -606,7 +615,7 @@ shared_examples 'a model supporting arrays' do |pg_native=false|
606
615
  end
607
616
 
608
617
  it 'cast values inside the array (integer)' do
609
- pending('ActiveRecord bug: https://github.com/rails/rails/pull/11245') if pg_native
618
+ pending('ActiveRecord bug: https://github.com/rails/rails/pull/11245') if pg_native && AR_VERSION < AR_4_2
610
619
  model.update_attributes(grades: ['1', 2, 3.4])
611
620
  expect(model.reload.grades).to be == [1, 2, 3]
612
621
  end
@@ -621,12 +630,14 @@ shared_examples 'a model supporting arrays' do |pg_native=false|
621
630
  expect(model.reload.tags).to be == ['1', nil]
622
631
  end
623
632
 
624
- it 'convert non array value as empty array' do
625
- model.update_attributes(grades: 'foo')
626
- expect(model.reload.grades).to be == []
633
+ if !pg_native || AR_VERSION < AR_4_2
634
+ it 'convert non array value as empty array' do
635
+ model.update_attributes(grades: 'foo')
636
+ expect(model.reload.grades).to be == []
637
+ end
627
638
  end
628
639
 
629
- if !pg_native || AR_VERSION == AR_4_1
640
+ if !pg_native || AR_VERSION >= AR_4_1
630
641
  it 'accept multidimensianl arrays' do
631
642
  model.update_attributes(grades: [[1, 2], [3, 4]])
632
643
  expect(model.reload.grades).to be == [[1, 2], [3, 4]]
@@ -5,6 +5,7 @@ require 'yaml'
5
5
  AR_VERSION = Gem::Version.new(ActiveRecord::VERSION::STRING)
6
6
  AR_4_0 = Gem::Version.new('4.0')
7
7
  AR_4_1 = Gem::Version.new('4.1.0.beta')
8
+ AR_4_2 = Gem::Version.new('4.2.0-rc1')
8
9
 
9
10
  ActiveRecord::Base.time_zone_aware_attributes = ENV['TIMEZONE_AWARE'] != '0'
10
11
  ActiveRecord::Base.configurations = {
@@ -60,31 +61,33 @@ class CreateAllTables < ActiveRecord::Migration
60
61
 
61
62
  def self.up
62
63
  if ENV['MYSQL']
63
- ActiveRecord::Base.establish_connection('test_mysql')
64
+ ActiveRecord::Base.establish_connection(:test_mysql)
64
65
  recreate_table(:mysql_regular_ar_models) { |t| define_columns(t); t.text :untyped_settings }
65
66
  end
66
67
 
67
68
  if ENV['POSTGRES']
68
- ActiveRecord::Base.establish_connection(ENV['POSTGRES_URL'] || 'test_postgresql')
69
+ ActiveRecord::Base.establish_connection(ENV['POSTGRES_URL'] || :test_postgresql)
69
70
  recreate_table(:postgresql_regular_ar_models) { |t| define_columns(t); t.text :untyped_settings }
70
71
 
71
72
  if AR_VERSION >= AR_4_0
72
73
  execute "create extension if not exists hstore"
73
74
  recreate_table(:postgres_hstore_typed_store_models) { |t| t.hstore :settings; t.text :untyped_settings }
74
75
 
75
- #execute "create extension if not exists json"
76
- recreate_table(:postgres_json_typed_store_models) { |t| t.json :settings; t.text :untyped_settings }
76
+ if ENV['POSTGRES_JSON']
77
+ execute "create extension if not exists json"
78
+ recreate_table(:postgres_json_typed_store_models) { |t| t.json :settings; t.text :untyped_settings }
79
+ end
77
80
  end
78
81
  end
79
82
 
80
- ActiveRecord::Base.establish_connection('test_sqlite3')
83
+ ActiveRecord::Base.establish_connection(:test_sqlite3)
81
84
  recreate_table(:sqlite3_regular_ar_models) { |t| define_columns(t); t.text :untyped_settings }
82
85
  recreate_table(:yaml_typed_store_models) { |t| t.text :settings; t.text :untyped_settings }
83
86
  recreate_table(:json_typed_store_models) { |t| t.text :settings; t.text :untyped_settings }
84
87
  recreate_table(:marshal_typed_store_models) { |t| t.text :settings; t.text :untyped_settings }
85
88
  end
86
89
  end
87
- ActiveRecord::Migration.verbose = false
90
+ ActiveRecord::Migration.verbose = true
88
91
  CreateAllTables.up
89
92
 
90
93
  class ColumnCoder
@@ -119,32 +122,34 @@ end
119
122
 
120
123
  if ENV['MYSQL']
121
124
  class MysqlRegularARModel < ActiveRecord::Base
122
- establish_connection 'test_mysql'
125
+ establish_connection :test_mysql
123
126
  store :untyped_settings, accessors: [:title]
124
127
  end
125
128
  end
126
129
 
127
130
  if ENV['POSTGRES']
128
131
  class PostgresqlRegularARModel < ActiveRecord::Base
129
- establish_connection ENV['POSTGRES_URL'] || 'test_postgresql'
132
+ establish_connection ENV['POSTGRES_URL'] || :test_postgresql
130
133
  store :untyped_settings, accessors: [:title]
131
134
  end
132
135
 
133
136
  if AR_VERSION >= AR_4_0
134
137
 
135
138
  class PostgresHstoreTypedStoreModel < ActiveRecord::Base
136
- establish_connection ENV['POSTGRES_URL'] || 'test_postgresql'
139
+ establish_connection ENV['POSTGRES_URL'] || :test_postgresql
137
140
  store :untyped_settings, accessors: [:title]
138
141
  typed_store :settings, coder: ColumnCoder.new(AsJson) do |s|
139
142
  define_store_columns(s)
140
143
  end
141
144
  end
142
145
 
143
- class PostgresJsonTypedStoreModel < ActiveRecord::Base
144
- establish_connection ENV['POSTGRES_URL'] || 'test_postgresql'
145
- store :untyped_settings, accessors: [:title]
146
- typed_store :settings, coder: ColumnCoder.new(AsJson) do |s|
147
- define_store_columns(s)
146
+ if ENV['POSTGRES_JSON']
147
+ class PostgresJsonTypedStoreModel < ActiveRecord::Base
148
+ establish_connection ENV['POSTGRES_URL'] || :test_postgresql
149
+ store :untyped_settings, accessors: [:title]
150
+ typed_store :settings, coder: ColumnCoder.new(AsJson) do |s|
151
+ define_store_columns(s)
152
+ end
148
153
  end
149
154
  end
150
155
 
@@ -152,12 +157,12 @@ if ENV['POSTGRES']
152
157
  end
153
158
 
154
159
  class Sqlite3RegularARModel < ActiveRecord::Base
155
- establish_connection 'test_sqlite3'
160
+ establish_connection :test_sqlite3
156
161
  store :untyped_settings, accessors: [:title]
157
162
  end
158
163
 
159
164
  class YamlTypedStoreModel < ActiveRecord::Base
160
- establish_connection 'test_sqlite3'
165
+ establish_connection :test_sqlite3
161
166
  store :untyped_settings, accessors: [:title]
162
167
  typed_store :settings do |s|
163
168
  define_store_columns(s)
@@ -165,7 +170,7 @@ class YamlTypedStoreModel < ActiveRecord::Base
165
170
  end
166
171
 
167
172
  class JsonTypedStoreModel < ActiveRecord::Base
168
- establish_connection 'test_sqlite3'
173
+ establish_connection :test_sqlite3
169
174
  store :untyped_settings, accessors: [:title]
170
175
  typed_store :settings, coder: ColumnCoder.new(JSON) do |s|
171
176
  define_store_columns(s)
@@ -187,7 +192,7 @@ module MarshalCoder
187
192
  end
188
193
 
189
194
  class MarshalTypedStoreModel < ActiveRecord::Base
190
- establish_connection 'test_sqlite3'
195
+ establish_connection :test_sqlite3
191
196
  store :untyped_settings, accessors: [:title]
192
197
  typed_store :settings, coder: ColumnCoder.new(MarshalCoder) do |s|
193
198
  define_store_columns(s)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-typedstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-28 00:00:00.000000000 Z
11
+ date: 2014-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -42,98 +48,98 @@ dependencies:
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ">="
51
+ - - "~>"
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ">="
58
+ - - "~>"
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: rspec
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ">="
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
67
  version: '0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - ">="
72
+ - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: coveralls
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - ">="
79
+ - - "~>"
74
80
  - !ruby/object:Gem::Version
75
81
  version: '0'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - ">="
86
+ - - "~>"
81
87
  - !ruby/object:Gem::Version
82
88
  version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: sqlite3
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ">="
93
+ - - "~>"
88
94
  - !ruby/object:Gem::Version
89
95
  version: '0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ">="
100
+ - - "~>"
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: pg
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
109
  version: '0'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
116
  version: '0'
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: mysql2
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ">="
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
123
  version: '0'
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ">="
128
+ - - "~>"
123
129
  - !ruby/object:Gem::Version
124
130
  version: '0'
125
131
  - !ruby/object:Gem::Dependency
126
132
  name: database_cleaner
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
- - - ">="
135
+ - - "~>"
130
136
  - !ruby/object:Gem::Version
131
137
  version: '0'
132
138
  type: :development
133
139
  prerelease: false
134
140
  version_requirements: !ruby/object:Gem::Requirement
135
141
  requirements:
136
- - - ">="
142
+ - - "~>"
137
143
  - !ruby/object:Gem::Version
138
144
  version: '0'
139
145
  description: ActiveRecord::Store but with type definition
@@ -154,6 +160,7 @@ files:
154
160
  - gemfiles/Gemfile.ar-3.2
155
161
  - gemfiles/Gemfile.ar-4.0
156
162
  - gemfiles/Gemfile.ar-4.1
163
+ - gemfiles/Gemfile.ar-4.2
157
164
  - gemfiles/Gemfile.ar-edge
158
165
  - lib/active_record/typed_store.rb
159
166
  - lib/active_record/typed_store/ar_32_fallbacks.rb
@@ -192,7 +199,7 @@ rubyforge_project:
192
199
  rubygems_version: 2.2.2
193
200
  signing_key:
194
201
  specification_version: 4
195
- summary: ActiveRecord::Store but with type definition
202
+ summary: Add type casting and full method attributes support to RctiveRecord store
196
203
  test_files:
197
204
  - spec/active_record/typed_store/typed_hash_spec.rb
198
205
  - spec/active_record/typed_store_spec.rb