activerecord-typedstore 0.4.4 → 0.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
  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