activerecord-typedstore 1.4.0 → 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: 17f01f8701f6af429d7fb15bfbcf9cf202f1d82cbe0f6878aa4a503ed69fc0e8
4
- data.tar.gz: e5e1dd4100a034b074fe2682e485ae1365c8bcbe9c4bb7bc96f697a5042c0f62
3
+ metadata.gz: e4f681cbd23a432d2e40094499e45a693ebacc8784d639dbd35f5d7467d3f024
4
+ data.tar.gz: 2adde8a50a784c41a23e188d51ababc7c19a553d6e4599e2265dad9c70ea5ebe
5
5
  SHA512:
6
- metadata.gz: f1703f9023ab91ac749d74335276a0824d3072060eac8a68270f2b52e41198dfeebecffd54738cd4b097fe97948371479e2db1c1fa8ebc30ca07eeeaf63bac91
7
- data.tar.gz: 8e48b1f137a374053092ccf52f3411759fcf421d1e4d8cf8b7f47b3c25d935aaf958f568ee35423381171aca879bf68a7b943493cf4947a8d3af19f66d54616f
6
+ metadata.gz: 67570832d5d8f6d7d05617f2f6572ed1e629bb1463f4bc123513d84219306a2aca59439082eed57a00d80e97474bd1b5a63269a94caabd530769bd8c098c3da6
7
+ data.tar.gz: a9f3f3d3ab6bbbe4b47625674fde96e3f3c8c0fbb697f2b557b1aa089ed45bd91e2c3bff98c0bbee8c55d52bc3d473bf16fc92759b65ad5a84548d91a5e81b14
@@ -7,16 +7,10 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  name: Ruby ${{ matrix.ruby }}
9
9
  strategy:
10
+ fail-fast: false
10
11
  matrix:
11
- ruby: [2.6, 2.7]
12
- gemfile: [Gemfile.ar-5.2, Gemfile.ar-6.0, Gemfile.ar-6.1, Gemfile.ar-master]
13
- exclude:
14
- - ruby: 2.6
15
- gemfile: Gemfile.ar-6.0
16
- - ruby: 2.6
17
- gemfile: Gemfile.ar-6.1
18
- - ruby: 2.6
19
- gemfile: Gemfile.ar-master
12
+ ruby: ['2.7', '3.0', '3.1']
13
+ gemfile: [Gemfile.ar-6.1, Gemfile.ar-7.0, Gemfile.ar-master]
20
14
  timezone_aware: [0, 1]
21
15
  env:
22
16
  BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}
@@ -25,23 +19,12 @@ jobs:
25
19
  MYSQL: 1
26
20
  POSTGRES_JSON: 1
27
21
  steps:
28
- - name: Check out code
29
- uses: actions/checkout@v2
30
- - name: Set up Ruby ${{ matrix.ruby }}
31
- uses: ruby/setup-ruby@v1
32
- with:
33
- ruby-version: ${{ matrix.ruby }}
34
- bundler-cache: true
35
- - name: Start MySQL and create DB
36
- run: |
37
- sudo systemctl start mysql.service
38
- mysql -uroot -proot -e 'create database typed_store_test;'
39
- - name: Start PostgresQL and create DB
40
- run: |
41
- sudo sed -i s/md5/trust/g /etc/postgresql/*/main/pg_hba.conf
42
- sudo systemctl start postgresql.service
43
- sudo -u postgres createuser --createdb --superuser ${USER}
44
- createdb typed_store_test
45
- echo "POSTGRES_URL=postgres://localhost/typed_store_test" >> $GITHUB_ENV
46
- - name: Ruby Tests
47
- run: bundle exec rake
22
+ - name: Check out code
23
+ uses: actions/checkout@v2
24
+ - name: Set up Ruby ${{ matrix.ruby }}
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ ruby-version: ${{ matrix.ruby }}
28
+ bundler-cache: true
29
+ - name: Ruby Tests
30
+ run: bundle exec rake
data/README.md CHANGED
@@ -1,8 +1,5 @@
1
1
  # ActiveRecord::TypedStore
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/byroot/activerecord-typedstore.png)](http://travis-ci.org/byroot/activerecord-typedstore)
4
- [![Code Climate](https://codeclimate.com/github/byroot/activerecord-typedstore.png)](https://codeclimate.com/github/byroot/activerecord-typedstore)
5
- [![Coverage Status](https://coveralls.io/repos/byroot/activerecord-typedstore/badge.png)](https://coveralls.io/r/byroot/activerecord-typedstore)
6
3
  [![Gem Version](https://badge.fury.io/rb/activerecord-typedstore.png)](http://badge.fury.io/rb/activerecord-typedstore)
7
4
 
8
5
  [ActiveRecord::Store](http://api.rubyonrails.org/classes/ActiveRecord/Store.html) but with typed attributes.
@@ -79,6 +76,12 @@ shop.save
79
76
  shop.reload
80
77
  shop.settings[:unknown] # => 'Hello World'
81
78
 
79
+ # You can group attributes with a prefix or suffix
80
+ typed_store(:browser, prefix: true) { |s| s.string :ip } # => #browser_ip
81
+ typed_store(:browser, prefix: :web) { |s| s.string :ip } # => #web_ip
82
+ typed_store(:browser, suffix: true) { |s| s.string :ip } # => #ip_browser
83
+ typed_store(:browser, suffix: :web) { |s| s.string :ip } # => #ip_web
84
+
82
85
  # If you only want type casting and default handling without accessors
83
86
 
84
87
  # you can disable them store wide
@@ -18,14 +18,11 @@ 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', '>= 5.2'
21
+ spec.add_dependency 'activerecord', '>= 6.1'
22
22
 
23
23
  spec.add_development_dependency 'bundler'
24
24
  spec.add_development_dependency 'rake', '~> 10'
25
25
  spec.add_development_dependency 'rspec', '~> 3'
26
- spec.add_development_dependency 'coveralls', '~> 0'
27
26
  spec.add_development_dependency 'sqlite3', '~> 1'
28
- spec.add_development_dependency 'pg', ENV.fetch('PG_VERSION', '~> 0.18')
29
- spec.add_development_dependency 'mysql2', '> 0.3'
30
27
  spec.add_development_dependency 'database_cleaner', '~> 1'
31
28
  end
@@ -1,6 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ENV['PG_VERSION'] = '~> 1.1'
4
3
  gemspec path: '..'
5
4
 
6
5
  gem 'activerecord', '~> 6.1.0'
@@ -2,4 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec path: '..'
4
4
 
5
- gem 'activerecord', '~> 5.2.0'
5
+ gem 'activerecord', '~> 7.0.0'
@@ -1,6 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ENV['PG_VERSION'] = '~> 1.1'
4
3
  gemspec path: '..'
5
4
 
6
5
  gem 'activerecord', github: 'rails/rails'
@@ -6,10 +6,38 @@ module ActiveRecord::TypedStore
6
6
  class DSL
7
7
  attr_reader :fields, :coder
8
8
 
9
- def initialize(attribute_name, options)
10
- @coder = options.fetch(:coder) { default_coder(attribute_name) }
11
- @accessors = options[:accessors]
12
- @accessors = [] if options[:accessors] == false
9
+ def initialize(store_name, options)
10
+ @coder = options.fetch(:coder) { default_coder(store_name) }
11
+ @store_name = store_name
12
+ @prefix =
13
+ case options[:prefix]
14
+ when String, Symbol
15
+ "#{options[:prefix]}_"
16
+ when true
17
+ "#{store_name}_"
18
+ when false, nil
19
+ ""
20
+ else
21
+ raise ArgumentError, "Unexpected type for prefix option. Expected string, symbol, or boolean"
22
+ end
23
+ @suffix =
24
+ case options[:suffix]
25
+ when String, Symbol
26
+ "_#{options[:suffix]}"
27
+ when true
28
+ "_#{store_name}"
29
+ when false, nil
30
+ ""
31
+ else
32
+ raise ArgumentError, "Unexpected type for suffix option. Expected string, symbol, or boolean"
33
+ end
34
+ @accessors = if options[:accessors] == false
35
+ {}
36
+ elsif options[:accessors].is_a?(Array)
37
+ options[:accessors].each_with_object({}) do |accessor_name, hash|
38
+ hash[accessor_name] = accessor_key_for(accessor_name)
39
+ end
40
+ end
13
41
  @fields = {}
14
42
  yield self
15
43
  end
@@ -25,7 +53,9 @@ module ActiveRecord::TypedStore
25
53
  end
26
54
 
27
55
  def accessors
28
- @accessors || @fields.values.select(&:accessor).map(&:name)
56
+ @accessors || @fields.values.select(&:accessor).each_with_object({}) do |field, hash|
57
+ hash[field.name] = accessor_key_for(field.name)
58
+ end
29
59
  end
30
60
 
31
61
  delegate :keys, to: :@fields
@@ -37,5 +67,11 @@ module ActiveRecord::TypedStore
37
67
  end
38
68
  end
39
69
  alias_method :date_time, :datetime
70
+
71
+ private
72
+
73
+ def accessor_key_for(name)
74
+ "#{@prefix}#{name}#{@suffix}"
75
+ end
40
76
  end
41
77
  end
@@ -14,9 +14,10 @@ module ActiveRecord::TypedStore
14
14
  class_attribute :typed_stores, :store_accessors, instance_accessor: false
15
15
  end
16
16
 
17
+ store_options = options.slice(:prefix, :suffix)
17
18
  dsl = DSL.new(store_attribute, options, &block)
18
19
  self.typed_stores = (self.typed_stores || {}).merge(store_attribute => dsl)
19
- self.store_accessors = typed_stores.each_value.flat_map(&:accessors).map { |a| -a.to_s }.to_set
20
+ self.store_accessors = typed_stores.each_value.flat_map { |d| d.accessors.values }.map { |a| -a.to_s }.to_set
20
21
 
21
22
  typed_klass = TypedHash.create(dsl.fields.values)
22
23
  const_set("#{store_attribute}_hash".camelize, typed_klass)
@@ -31,20 +32,20 @@ module ActiveRecord::TypedStore
31
32
  Type.new(typed_klass, dsl.coder, subtype)
32
33
  end
33
34
  end
34
- store_accessor(store_attribute, dsl.accessors)
35
+ store_accessor(store_attribute, dsl.accessors.keys, **store_options)
35
36
 
36
- dsl.accessors.each do |accessor_name|
37
- define_method("#{accessor_name}_changed?") do
37
+ dsl.accessors.each do |accessor_name, accessor_key|
38
+ define_method("#{accessor_key}_changed?") do
38
39
  send("#{store_attribute}_changed?") &&
39
40
  send(store_attribute)[accessor_name] != send("#{store_attribute}_was")[accessor_name]
40
41
  end
41
42
 
42
- define_method("#{accessor_name}_was") do
43
+ define_method("#{accessor_key}_was") do
43
44
  send("#{store_attribute}_was")[accessor_name]
44
45
  end
45
46
 
46
- define_method("restore_#{accessor_name}!") do
47
- send("#{accessor_name}=", send("#{accessor_name}_was"))
47
+ define_method("restore_#{accessor_key}!") do
48
+ send("#{accessor_key}=", send("#{accessor_name}_was"))
48
49
  end
49
50
  end
50
51
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  module TypedStore
5
- VERSION = '1.4.0'
5
+ VERSION = '1.5.0'
6
6
  end
7
7
  end
@@ -696,6 +696,82 @@ shared_examples 'a store' do |retain_type = true, settings_type = :text|
696
696
 
697
697
  end
698
698
 
699
+ describe 'with prefix true' do
700
+
701
+ it 'defines prefixed accessors' do
702
+ expect(model).to respond_to :prefixed_settings_language
703
+ expect(model).to respond_to :prefixed_settings_language=
704
+ end
705
+
706
+ it 'does not define unprefixed accessors' do
707
+ expect(model).not_to respond_to :language
708
+ expect(model).not_to respond_to :language=
709
+ end
710
+
711
+ it 'can be updated' do
712
+ model.update(prefixed_settings_language: 'en')
713
+ expect(model.reload.prefixed_settings_language).to be == 'en'
714
+ end
715
+
716
+ end
717
+
718
+ describe 'with custom prefix' do
719
+
720
+ it 'defines prefixed accessors' do
721
+ expect(model).to respond_to :custom_language
722
+ expect(model).to respond_to :custom_language=
723
+ end
724
+
725
+ it 'does not define unprefixed accessors' do
726
+ expect(model).not_to respond_to :language
727
+ expect(model).not_to respond_to :language=
728
+ end
729
+
730
+ it 'can be updated' do
731
+ model.update(custom_language: 'en')
732
+ expect(model.reload.custom_language).to be == 'en'
733
+ end
734
+
735
+ end
736
+
737
+ describe 'with suffix true' do
738
+
739
+ it 'defines suffixed accessors' do
740
+ expect(model).to respond_to :language_suffixed_settings
741
+ expect(model).to respond_to :language_suffixed_settings=
742
+ end
743
+
744
+ it 'does not define unprefixed accessors' do
745
+ expect(model).not_to respond_to :language
746
+ expect(model).not_to respond_to :language=
747
+ end
748
+
749
+ it 'can be updated' do
750
+ model.update(language_suffixed_settings: 'en')
751
+ expect(model.reload.language_suffixed_settings).to be == 'en'
752
+ end
753
+
754
+ end
755
+
756
+ describe 'with custom suffix' do
757
+
758
+ it 'defines suffixed accessors' do
759
+ expect(model).to respond_to :language_custom
760
+ expect(model).to respond_to :language_custom=
761
+ end
762
+
763
+ it 'does not define unprefixed accessors' do
764
+ expect(model).not_to respond_to :language
765
+ expect(model).not_to respond_to :language=
766
+ end
767
+
768
+ it 'can be updated' do
769
+ model.update(language_custom: 'en')
770
+ expect(model.reload.language_custom).to be == 'en'
771
+ end
772
+
773
+ end
774
+
699
775
  describe '`any` attributes' do
700
776
 
701
777
  it 'accept any type' do
data/spec/spec_helper.rb CHANGED
@@ -2,15 +2,6 @@ lib = File.expand_path('../lib', __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  require 'database_cleaner'
5
-
6
- require 'simplecov'
7
- require 'coveralls'
8
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
9
- SimpleCov::Formatter::HTMLFormatter,
10
- Coveralls::SimpleCov::Formatter
11
- ])
12
- SimpleCov.start
13
-
14
5
  require 'activerecord-typedstore'
15
6
 
16
7
  Dir[File.expand_path(File.join(File.dirname(__FILE__), 'support', '**', '*.rb'))].each { |f| require f }
@@ -2,11 +2,14 @@ require 'active_record'
2
2
  require 'json'
3
3
  require 'yaml'
4
4
 
5
+ ENV["RAILS_ENV"] = "test"
6
+
5
7
  ActiveRecord::Base.time_zone_aware_attributes = ENV['TIMEZONE_AWARE'] != '0'
8
+ credentials = { 'database' => 'typed_store_test', 'username' => 'typed_store', 'password' => 'typed_store' }
6
9
  ActiveRecord::Base.configurations = {
7
- 'test_sqlite3' => { 'adapter' => 'sqlite3', 'database' => '/tmp/typed_store.db' },
8
- 'test_postgresql' => { 'adapter' => 'postgresql', 'database' => 'typed_store_test', 'username' => 'postgres' },
9
- 'test_mysql' => { 'adapter' => 'mysql2', 'database' => 'typed_store_test', 'username' => 'root', 'password' => 'root' },
10
+ test: {
11
+ 'test_sqlite3' => { 'adapter' => 'sqlite3', 'database' => '/tmp/typed_store.db' },
12
+ }
10
13
  }
11
14
 
12
15
  def define_columns(t)
@@ -39,12 +42,7 @@ def define_columns(t)
39
42
 
40
43
  t.integer :grades, array: true
41
44
 
42
- if t.respond_to?(:name) && t.name =~ /sqlite|mysql/
43
- # native sqlite cannot automatically cast array to yaml
44
- t.string :tags, array: true, null: false, default: [].to_yaml
45
- else
46
- t.string :tags, array: true, null: false, default: []
47
- end
45
+ t.string :tags, array: true, null: false, default: [].to_yaml
48
46
 
49
47
  t.string :nickname, blank: false, default: 'Please enter your nickname'
50
48
  end
@@ -74,37 +72,22 @@ def define_store_with_attributes(**options)
74
72
  end
75
73
  end
76
74
 
75
+ def define_stores_with_prefix_and_suffix(**options)
76
+ typed_store(:prefixed_settings, prefix: true, **options) { |t| t.any :language }
77
+ typed_store(:suffixed_settings, suffix: true, **options) { |t| t.any :language }
78
+ typed_store(:custom_prefixed_settings, prefix: :custom, **options) { |t| t.any :language }
79
+ typed_store(:custom_suffixed_settings, suffix: :custom, **options) { |t| t.any :language }
80
+ end
81
+
77
82
  MigrationClass = ActiveRecord::Migration["5.0"]
78
83
  class CreateAllTables < MigrationClass
79
84
 
80
- def self.recreate_table(name, *args, &block)
81
- execute "drop table if exists #{name}"
82
- create_table(name, *args, &block)
83
- end
84
-
85
85
  def self.up
86
- if ENV['MYSQL']
87
- ActiveRecord::Base.establish_connection(:test_mysql)
88
- recreate_table(:mysql_regular_ar_models) { |t| define_columns(t); t.text :untyped_settings }
89
- end
90
-
91
- if ENV['POSTGRES']
92
- ActiveRecord::Base.establish_connection(ENV['POSTGRES_URL'] || :test_postgresql)
93
- recreate_table(:postgresql_regular_ar_models) { |t| define_columns(t); t.text :untyped_settings }
94
-
95
- execute "create extension if not exists hstore"
96
- recreate_table(:postgres_hstore_typed_store_models) { |t| t.hstore :settings; t.text :untyped_settings }
97
-
98
- if ENV['POSTGRES_JSON']
99
- recreate_table(:postgres_json_typed_store_models) { |t| t.json :settings; t.text :explicit_settings; t.text :partial_settings; t.text :untyped_settings }
100
- end
101
- end
102
-
103
- ActiveRecord::Base.establish_connection(:test_sqlite3)
104
- recreate_table(:sqlite3_regular_ar_models) { |t| define_columns(t); t.text :untyped_settings }
105
- recreate_table(:yaml_typed_store_models) { |t| t.text :settings; t.text :explicit_settings; t.text :partial_settings; t.text :untyped_settings }
106
- recreate_table(:json_typed_store_models) { |t| t.text :settings; t.text :explicit_settings; t.text :partial_settings; t.text :untyped_settings }
107
- recreate_table(:marshal_typed_store_models) { |t| t.text :settings; t.text :explicit_settings; t.text :partial_settings; t.text :untyped_settings }
86
+ ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations.configs_for(env_name: "test", name: :test_sqlite3))
87
+ create_table(:sqlite3_regular_ar_models, force: true) { |t| define_columns(t); t.text :untyped_settings }
88
+ create_table(:yaml_typed_store_models, force: true) { |t| %i[settings explicit_settings partial_settings untyped_settings prefixed_settings suffixed_settings custom_prefixed_settings custom_suffixed_settings].each { |column| t.text column} }
89
+ create_table(:json_typed_store_models, force: true) { |t| %i[settings explicit_settings partial_settings untyped_settings prefixed_settings suffixed_settings custom_prefixed_settings custom_suffixed_settings].each { |column| t.text column} }
90
+ create_table(:marshal_typed_store_models, force: true) { |t| %i[settings explicit_settings partial_settings untyped_settings prefixed_settings suffixed_settings custom_prefixed_settings custom_suffixed_settings].each { |column| t.text column} }
108
91
  end
109
92
  end
110
93
  ActiveRecord::Migration.verbose = true
@@ -129,44 +112,6 @@ class ColumnCoder
129
112
 
130
113
  end
131
114
 
132
- module AsJson
133
- extend self
134
-
135
- def load(value)
136
- value
137
- end
138
-
139
- def dump(value)
140
- value.as_json
141
- end
142
-
143
- end
144
-
145
- if ENV['MYSQL']
146
- class MysqlRegularARModel < ActiveRecord::Base
147
- establish_connection :test_mysql
148
- store :untyped_settings, accessors: [:title]
149
- end
150
- end
151
-
152
- if ENV['POSTGRES']
153
- class PostgresqlRegularARModel < ActiveRecord::Base
154
- establish_connection ENV['POSTGRES_URL'] || :test_postgresql
155
- store :untyped_settings, accessors: [:title]
156
- end
157
-
158
- if ENV['POSTGRES_JSON']
159
- class PostgresJsonTypedStoreModel < ActiveRecord::Base
160
- establish_connection ENV['POSTGRES_URL'] || :test_postgresql
161
- store :untyped_settings, accessors: [:title]
162
-
163
- define_store_with_attributes(coder: ColumnCoder.new(AsJson))
164
- define_store_with_no_attributes(coder: ColumnCoder.new(AsJson))
165
- define_store_with_partial_attributes(coder: ColumnCoder.new(AsJson))
166
- end
167
- end
168
- end
169
-
170
115
  class Sqlite3RegularARModel < ActiveRecord::Base
171
116
  establish_connection :test_sqlite3
172
117
  store :untyped_settings, accessors: [:title]
@@ -179,6 +124,7 @@ class YamlTypedStoreModel < ActiveRecord::Base
179
124
  define_store_with_attributes
180
125
  define_store_with_no_attributes
181
126
  define_store_with_partial_attributes
127
+ define_stores_with_prefix_and_suffix
182
128
  end
183
129
 
184
130
  class InheritedTypedStoreModel < YamlTypedStoreModel
@@ -196,6 +142,7 @@ class JsonTypedStoreModel < ActiveRecord::Base
196
142
  define_store_with_attributes(coder: ColumnCoder.new(JSON))
197
143
  define_store_with_no_attributes(coder: ColumnCoder.new(JSON))
198
144
  define_store_with_partial_attributes(coder: ColumnCoder.new(JSON))
145
+ define_stores_with_prefix_and_suffix(coder: ColumnCoder.new(JSON))
199
146
  end
200
147
 
201
148
  module MarshalCoder
@@ -218,6 +165,7 @@ class MarshalTypedStoreModel < ActiveRecord::Base
218
165
  define_store_with_attributes(coder: ColumnCoder.new(MarshalCoder))
219
166
  define_store_with_no_attributes(coder: ColumnCoder.new(MarshalCoder))
220
167
  define_store_with_partial_attributes(coder: ColumnCoder.new(MarshalCoder))
168
+ define_stores_with_prefix_and_suffix(coder: ColumnCoder.new(MarshalCoder))
221
169
  end
222
170
 
223
171
  Models = [
@@ -227,6 +175,3 @@ Models = [
227
175
  JsonTypedStoreModel,
228
176
  MarshalTypedStoreModel
229
177
  ]
230
- Models << MysqlRegularARModel if defined?(MysqlRegularARModel)
231
- Models << PostgresqlRegularARModel if defined?(PostgresqlRegularARModel)
232
- Models << PostgresJsonTypedStoreModel if defined?(PostgresJsonTypedStoreModel)
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: 1.4.0
4
+ version: 1.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: 2021-09-28 00:00:00.000000000 Z
11
+ date: 2022-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.2'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3'
69
- - !ruby/object:Gem::Dependency
70
- name: coveralls
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: sqlite3
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,34 +80,6 @@ dependencies:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '1'
97
- - !ruby/object:Gem::Dependency
98
- name: pg
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.18'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.18'
111
- - !ruby/object:Gem::Dependency
112
- name: mysql2
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">"
116
- - !ruby/object:Gem::Version
117
- version: '0.3'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">"
123
- - !ruby/object:Gem::Version
124
- version: '0.3'
125
83
  - !ruby/object:Gem::Dependency
126
84
  name: database_cleaner
127
85
  requirement: !ruby/object:Gem::Requirement
@@ -151,10 +109,8 @@ files:
151
109
  - README.md
152
110
  - Rakefile
153
111
  - activerecord-typedstore.gemspec
154
- - gemfiles/Gemfile.ar-5.0
155
- - gemfiles/Gemfile.ar-5.2
156
- - gemfiles/Gemfile.ar-6.0
157
112
  - gemfiles/Gemfile.ar-6.1
113
+ - gemfiles/Gemfile.ar-7.0
158
114
  - gemfiles/Gemfile.ar-master
159
115
  - lib/active_record/typed_store.rb
160
116
  - lib/active_record/typed_store/behavior.rb
@@ -190,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
146
  - !ruby/object:Gem::Version
191
147
  version: '0'
192
148
  requirements: []
193
- rubygems_version: 3.1.2
149
+ rubygems_version: 3.3.7
194
150
  signing_key:
195
151
  specification_version: 4
196
152
  summary: Add type casting and full method attributes support to АctiveRecord store
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec path: '..'
4
-
5
- gem 'sqlite3', '~> 1.3.0'
6
- gem 'activerecord', '~> 5.0.0'
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec path: '..'
4
-
5
- gem 'activerecord', '~> 6.0.0'