temporal_tables 0.8.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +53 -0
  3. data/.rubocop.yml +158 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +5 -5
  6. data/Gemfile +2 -0
  7. data/README.md +15 -5
  8. data/Rakefile +7 -2
  9. data/config.ru +2 -0
  10. data/gemfiles/Gemfile.6.0.mysql.lock +84 -84
  11. data/gemfiles/Gemfile.6.0.pg.lock +103 -98
  12. data/gemfiles/Gemfile.6.1.mysql.lock +180 -0
  13. data/gemfiles/Gemfile.6.1.pg.lock +180 -0
  14. data/gemfiles/{Gemfile.5.2.mysql → Gemfile.7.0.mysql} +2 -2
  15. data/gemfiles/Gemfile.7.0.mysql.lock +173 -0
  16. data/gemfiles/{Gemfile.5.2.pg → Gemfile.7.0.pg} +1 -1
  17. data/gemfiles/Gemfile.7.0.pg.lock +173 -0
  18. data/lib/temporal_tables/arel_table.rb +10 -9
  19. data/lib/temporal_tables/association_extensions.rb +2 -0
  20. data/lib/temporal_tables/connection_adapters/mysql_adapter.rb +5 -3
  21. data/lib/temporal_tables/connection_adapters/postgresql_adapter.rb +5 -3
  22. data/lib/temporal_tables/history_hook.rb +8 -5
  23. data/lib/temporal_tables/preloader_extensions.rb +2 -0
  24. data/lib/temporal_tables/reflection_extensions.rb +11 -14
  25. data/lib/temporal_tables/relation_extensions.rb +11 -24
  26. data/lib/temporal_tables/temporal_adapter.rb +77 -90
  27. data/lib/temporal_tables/temporal_class.rb +29 -28
  28. data/lib/temporal_tables/version.rb +3 -1
  29. data/lib/temporal_tables/whodunnit.rb +5 -3
  30. data/lib/temporal_tables.rb +42 -32
  31. data/spec/basic_history_spec.rb +52 -43
  32. data/spec/internal/app/models/broom.rb +2 -0
  33. data/spec/internal/app/models/cat.rb +3 -1
  34. data/spec/internal/app/models/cat_life.rb +2 -0
  35. data/spec/internal/app/models/coven.rb +2 -0
  36. data/spec/internal/app/models/flying_machine.rb +2 -0
  37. data/spec/internal/app/models/person.rb +2 -0
  38. data/spec/internal/app/models/rocket_broom.rb +2 -0
  39. data/spec/internal/app/models/wart.rb +3 -1
  40. data/spec/internal/config/database.ci.yml +12 -0
  41. data/spec/internal/db/schema.rb +8 -4
  42. data/spec/spec_helper.rb +39 -5
  43. data/spec/support/database.rb +10 -6
  44. data/temporal_tables.gemspec +31 -18
  45. metadata +103 -35
  46. data/.github/workflow/test.yml +0 -44
  47. data/gemfiles/Gemfile.5.1.mysql +0 -16
  48. data/gemfiles/Gemfile.5.1.mysql.lock +0 -147
  49. data/gemfiles/Gemfile.5.1.pg +0 -16
  50. data/gemfiles/Gemfile.5.1.pg.lock +0 -147
  51. data/gemfiles/Gemfile.5.2.mysql.lock +0 -155
  52. data/gemfiles/Gemfile.5.2.pg.lock +0 -155
  53. data/lib/temporal_tables/join_extensions.rb +0 -20
  54. data/spec/extensions/combustion.rb +0 -9
  55. data/spec/internal/config/routes.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee8d4dcf1ea296b8fcfe3f85fc07009814c004bbe2dfbad704de6fe13fa148ed
4
- data.tar.gz: 2a27e33796d5fd8186212ccd218b9467ada0bd7c7ad1efc905aa1a0ea6f47bc7
3
+ metadata.gz: ca70c4c007415e5835f5730f6e75f50c35c4df2d25ae815b6b40dd180609f3bc
4
+ data.tar.gz: 2d65f6d907abef85e2746af4090b0e03a4da70ccf6bc2bbff988440996aab48c
5
5
  SHA512:
6
- metadata.gz: 36d790abd0bfc655a0a8fd76fe5845bab7a0871d83d7384ef5461cabf21282601ee75888aada656fdd77cef144244406f3e5568d68ebada8b14af5baf8fe76a1
7
- data.tar.gz: 96a060054680df625c7fcb2399b42cf5944bb1f319b48a190a373f75b7b9d506d2038a5e34ecff55592e9e59c0bb540035d832c5a3f088a5c9097c3e1dc9eb20
6
+ metadata.gz: 2f67e6396728644773ef0a77e852329feb5bec150e04eb1c1172f3a366bde947b71e7d15d0056dc7fff829080002242ef04055aab8e447720e0efe622bbe5085
7
+ data.tar.gz: 17271125d8e63c6a8baed4ed0e7b5c9cf58bd1cfd4afeb421286226004138b335f0f50e479f4c3886e4b3143a411d715d40e273712be40996cbb57247c843939
@@ -0,0 +1,53 @@
1
+ name: Continuous Integration
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - '**'
7
+
8
+ jobs:
9
+ tests:
10
+ runs-on: ubuntu-latest
11
+
12
+ services:
13
+ postgres:
14
+ image: postgres:11.5
15
+ ports: ["5432:5432"]
16
+ options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
17
+ mysql:
18
+ image: mysql:8.0
19
+ env:
20
+ MYSQL_ROOT_PASSWORD: password
21
+ ports: ["3306:3306"]
22
+ options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 5
23
+
24
+ strategy:
25
+ fail-fast: false
26
+ matrix:
27
+ ruby: ["2.5", "2.6", "2.7", "3.0", "3.1"]
28
+ rails: ["6.0", "6.1", "7.0"]
29
+ db: ["pg", "mysql"]
30
+ exclude:
31
+ - ruby: 2.5
32
+ rails: 7.0
33
+ - ruby: 2.6
34
+ rails: 7.0
35
+ - ruby: 3.1
36
+ rails: 7.0
37
+ env:
38
+ BUNDLE_GEMFILE: ${{github.workspace}}/gemfiles/Gemfile.${{matrix.rails}}.${{ matrix.db }}
39
+ steps:
40
+ - uses: actions/checkout@v2
41
+ - uses: ruby/setup-ruby@v1
42
+ with:
43
+ ruby-version: "${{ matrix.ruby }}"
44
+ - name: Bundle
45
+ run: |
46
+ gem install bundler:2.2.15
47
+ bundle install
48
+
49
+ - name: Run Tests
50
+ env:
51
+ PGHOST: localhost
52
+ PGUSER: postgres
53
+ run: bundle exec rspec
data/.rubocop.yml ADDED
@@ -0,0 +1,158 @@
1
+ require:
2
+ - rubocop-rails
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.5
6
+ Gemspec/DateAssignment: # new in 1.10
7
+ Enabled: true
8
+ Gemspec/RequireMFA: # new in 1.23
9
+ Enabled: true
10
+ Layout/LineEndStringConcatenationIndentation: # new in 1.18
11
+ Enabled: true
12
+ Layout/SpaceBeforeBrackets: # new in 1.7
13
+ Enabled: true
14
+ Lint/AmbiguousAssignment: # new in 1.7
15
+ Enabled: true
16
+ Lint/AmbiguousOperatorPrecedence: # new in 1.21
17
+ Enabled: true
18
+ Lint/AmbiguousRange: # new in 1.19
19
+ Enabled: true
20
+ Lint/DeprecatedConstants: # new in 1.8
21
+ Enabled: true
22
+ Lint/DuplicateBranch: # new in 1.3
23
+ Enabled: true
24
+ Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
25
+ Enabled: true
26
+ Lint/EmptyBlock: # new in 1.1
27
+ Enabled: true
28
+ Lint/EmptyClass: # new in 1.3
29
+ Enabled: true
30
+ Lint/EmptyInPattern: # new in 1.16
31
+ Enabled: true
32
+ Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
33
+ Enabled: true
34
+ Lint/LambdaWithoutLiteralBlock: # new in 1.8
35
+ Enabled: true
36
+ Lint/NoReturnInBeginEndBlocks: # new in 1.2
37
+ Enabled: true
38
+ Lint/NumberedParameterAssignment: # new in 1.9
39
+ Enabled: true
40
+ Lint/OrAssignmentToConstant: # new in 1.9
41
+ Enabled: true
42
+ Lint/RedundantDirGlobSort: # new in 1.8
43
+ Enabled: true
44
+ Lint/RequireRelativeSelfPath: # new in 1.22
45
+ Enabled: true
46
+ Lint/SymbolConversion: # new in 1.9
47
+ Enabled: true
48
+ Lint/ToEnumArguments: # new in 1.1
49
+ Enabled: true
50
+ Lint/TripleQuotes: # new in 1.9
51
+ Enabled: true
52
+ Lint/UnexpectedBlockArity: # new in 1.5
53
+ Enabled: true
54
+ Lint/UnmodifiedReduceAccumulator: # new in 1.1
55
+ Enabled: true
56
+ Lint/UselessRuby2Keywords: # new in 1.23
57
+ Enabled: true
58
+ Naming/BlockForwarding: # new in 1.24
59
+ Enabled: true
60
+ Metrics/BlockLength:
61
+ Exclude:
62
+ - 'spec/**/*.rb'
63
+ Security/IoMethods: # new in 1.22
64
+ Enabled: true
65
+ Style/ArgumentsForwarding: # new in 1.1
66
+ Enabled: true
67
+ Style/CollectionCompact: # new in 1.2
68
+ Enabled: true
69
+ Style/Documentation:
70
+ Enabled: false
71
+ Style/DocumentDynamicEvalDefinition: # new in 1.1
72
+ Enabled: true
73
+ Style/EndlessMethod: # new in 1.8
74
+ Enabled: true
75
+ Style/FileRead: # new in 1.24
76
+ Enabled: true
77
+ Style/FileWrite: # new in 1.24
78
+ Enabled: true
79
+ Style/FormatStringToken:
80
+ Enabled: false
81
+ Style/HashConversion: # new in 1.10
82
+ Enabled: true
83
+ Style/HashExcept: # new in 1.7
84
+ Enabled: true
85
+ Style/IfWithBooleanLiteralBranches: # new in 1.9
86
+ Enabled: true
87
+ Style/InPatternThen: # new in 1.16
88
+ Enabled: true
89
+ Style/MapToHash: # new in 1.24
90
+ Enabled: true
91
+ Style/MultilineBlockChain:
92
+ Enabled: false
93
+ Style/MultilineInPatternThen: # new in 1.16
94
+ Enabled: true
95
+ Style/NegatedIfElseCondition: # new in 1.2
96
+ Enabled: true
97
+ Style/NilLambda: # new in 1.3
98
+ Enabled: true
99
+ Style/NumberedParameters: # new in 1.22
100
+ Enabled: true
101
+ Style/NumberedParametersLimit: # new in 1.22
102
+ Enabled: true
103
+ Style/OpenStructUse: # new in 1.23
104
+ Enabled: true
105
+ Style/QuotedSymbols: # new in 1.16
106
+ Enabled: true
107
+ Style/RedundantArgument: # new in 1.4
108
+ Enabled: true
109
+ Style/RedundantSelfAssignmentBranch: # new in 1.19
110
+ Enabled: true
111
+ Style/SelectByRegexp: # new in 1.22
112
+ Enabled: true
113
+ Style/StringChars: # new in 1.12
114
+ Enabled: true
115
+ Style/SwapValues: # new in 1.1
116
+ Enabled: true
117
+ Style/SymbolArray:
118
+ Enabled: false
119
+ Naming/VariableNumber:
120
+ Enabled: false
121
+ Style/WordArray:
122
+ Enabled: false
123
+ Rails/ActiveRecordCallbacksOrder: # new in 2.7
124
+ Enabled: true
125
+ Rails/AfterCommitOverride: # new in 2.8
126
+ Enabled: true
127
+ Rails/AttributeDefaultBlockValue: # new in 2.9
128
+ Enabled: true
129
+ Rails/FindById: # new in 2.7
130
+ Enabled: true
131
+ Rails/Inquiry: # new in 2.7
132
+ Enabled: true
133
+ Rails/MailerName: # new in 2.7
134
+ Enabled: true
135
+ Rails/MatchRoute: # new in 2.7
136
+ Enabled: true
137
+ Rails/NegateInclude: # new in 2.7
138
+ Enabled: true
139
+ Rails/Pluck: # new in 2.7
140
+ Enabled: true
141
+ Rails/ApplicationRecord:
142
+ Enabled: false
143
+ Rails/PluckInWhere: # new in 2.7
144
+ Enabled: true
145
+ Rails/RenderInline: # new in 2.7
146
+ Enabled: true
147
+ Rails/RenderPlainText: # new in 2.7
148
+ Enabled: true
149
+ Rails/ShortI18n: # new in 2.7
150
+ Enabled: true
151
+ Rails/SquishedSQLHeredocs: # new in 2.8
152
+ Enabled: true
153
+ Rails/WhereEquals: # new in 2.9
154
+ Enabled: true
155
+ Rails/WhereExists: # new in 2.7
156
+ Enabled: true
157
+ Rails/WhereNot: # new in 2.8
158
+ Enabled: true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.4
1
+ 3.0.0
data/.travis.yml CHANGED
@@ -1,11 +1,11 @@
1
1
  rvm:
2
- - 2.5.4
2
+ - 3.0.0
3
3
 
4
4
  gemfile:
5
- - gemfiles/Gemfile.5.1.pg
6
- - gemfiles/Gemfile.5.2.pg
7
5
  - gemfiles/Gemfile.6.0.pg
6
+ - gemfiles/Gemfile.6.1.pg
7
+ - gemfiles/Gemfile.7.0.pg
8
8
 
9
- - gemfiles/Gemfile.5.1.mysql
10
- - gemfiles/Gemfile.5.2.mysql
11
9
  - gemfiles/Gemfile.6.0.mysql
10
+ - gemfiles/Gemfile.6.1.mysql
11
+ - gemfiles/Gemfile.7.0.mysql
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'http://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in temporal_tables.gemspec
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
+ [![Actions Status](https://github.com/bkroeker/temporal_tables/workflows/Continuous%20Integration/badge.svg?branch=master)](https://github.com/bkroeker/temporal_tables/actions)
2
+
1
3
  # TemporalTables
2
4
 
3
5
  Easily recall what your data looked like at any point in the past! TemporalTables sets up and maintains history tables to track all temporal changes to to your data.
4
6
 
5
- Currently tested on Ruby 2.5.4, Rails 5.1 - 6.0, Postgres 11.3, MySQL 8.0.13
6
-
7
7
  ## Installation
8
8
 
9
9
  Add this line to your application's Gemfile:
@@ -86,18 +86,28 @@ Person #=> Person(id: :integer, name: :string)
86
86
  Person.history #=> PersonHistory(history_id: :integer, id: :integer, name: :string, eff_from: :datetime, eff_to: :datetime)
87
87
  ```
88
88
 
89
- You can easily get a history of all changes to a records.
89
+ You can easily get a history of all changes to a record.
90
90
  ``` ruby
91
- Person.history.where(id: 1).map { |p| "#{p.eff_from}: #{p.to_s}")
91
+ Person.history.where(id: 1).map { |p| "#{p.eff_from}: #{p.to_s}" }
92
92
  # => [
93
93
  # "1974-01-14: Emily",
94
94
  # "2003-11-03: Grunthilda from Delta Gamma Gamma"
95
95
  # ]
96
96
  ```
97
97
 
98
+ A convenient `history` method is mixed into ActiveRecord classes. The above could be rewritten as:
99
+ ``` ruby
100
+ grunthilda = Person.find(1)
101
+ grunthilda.history.map { |p| "#{p.eff_from}: #{p.to_s}" }
102
+ ```
103
+
98
104
  You can query for records as they were at any point in the past by calling `at`.
99
105
  ``` ruby
100
- Person.history.at(2.years.ago).where(id: 1).first.name #=> "Grunthilda"
106
+ Person.history.at(2.years.ago).where(id: 1).first.name #=> "Grunthilda"
107
+
108
+ # alternatively:
109
+ grunthilda = Person.find(1)
110
+ grunthilda.history.at(2.years.ago).first.name #=> "Grunthilda"
101
111
  ```
102
112
 
103
113
  Associations work too.
data/Rakefile CHANGED
@@ -1,4 +1,9 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rubocop/rake_task'
5
+
6
+ RuboCop::RakeTask.new
2
7
 
3
8
  begin
4
9
  require 'gemika/tasks'
@@ -6,4 +11,4 @@ rescue LoadError
6
11
  puts 'Run `gem install gemika` for additional tasks'
7
12
  end
8
13
 
9
- task :default => 'matrix:spec'
14
+ task default: ['matrix:spec', 'rubocop']
data/config.ru CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'bundler'
3
5
 
@@ -1,129 +1,129 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- temporal_tables (0.8.1)
5
- rails (>= 5.0, < 6.1)
4
+ temporal_tables (1.0.1)
5
+ rails (>= 6.0, < 7.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actioncable (6.0.2.1)
11
- actionpack (= 6.0.2.1)
10
+ actioncable (6.0.4.4)
11
+ actionpack (= 6.0.4.4)
12
12
  nio4r (~> 2.0)
13
13
  websocket-driver (>= 0.6.1)
14
- actionmailbox (6.0.2.1)
15
- actionpack (= 6.0.2.1)
16
- activejob (= 6.0.2.1)
17
- activerecord (= 6.0.2.1)
18
- activestorage (= 6.0.2.1)
19
- activesupport (= 6.0.2.1)
14
+ actionmailbox (6.0.4.4)
15
+ actionpack (= 6.0.4.4)
16
+ activejob (= 6.0.4.4)
17
+ activerecord (= 6.0.4.4)
18
+ activestorage (= 6.0.4.4)
19
+ activesupport (= 6.0.4.4)
20
20
  mail (>= 2.7.1)
21
- actionmailer (6.0.2.1)
22
- actionpack (= 6.0.2.1)
23
- actionview (= 6.0.2.1)
24
- activejob (= 6.0.2.1)
21
+ actionmailer (6.0.4.4)
22
+ actionpack (= 6.0.4.4)
23
+ actionview (= 6.0.4.4)
24
+ activejob (= 6.0.4.4)
25
25
  mail (~> 2.5, >= 2.5.4)
26
26
  rails-dom-testing (~> 2.0)
27
- actionpack (6.0.2.1)
28
- actionview (= 6.0.2.1)
29
- activesupport (= 6.0.2.1)
27
+ actionpack (6.0.4.4)
28
+ actionview (= 6.0.4.4)
29
+ activesupport (= 6.0.4.4)
30
30
  rack (~> 2.0, >= 2.0.8)
31
31
  rack-test (>= 0.6.3)
32
32
  rails-dom-testing (~> 2.0)
33
33
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
34
- actiontext (6.0.2.1)
35
- actionpack (= 6.0.2.1)
36
- activerecord (= 6.0.2.1)
37
- activestorage (= 6.0.2.1)
38
- activesupport (= 6.0.2.1)
34
+ actiontext (6.0.4.4)
35
+ actionpack (= 6.0.4.4)
36
+ activerecord (= 6.0.4.4)
37
+ activestorage (= 6.0.4.4)
38
+ activesupport (= 6.0.4.4)
39
39
  nokogiri (>= 1.8.5)
40
- actionview (6.0.2.1)
41
- activesupport (= 6.0.2.1)
40
+ actionview (6.0.4.4)
41
+ activesupport (= 6.0.4.4)
42
42
  builder (~> 3.1)
43
43
  erubi (~> 1.4)
44
44
  rails-dom-testing (~> 2.0)
45
45
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
46
- activejob (6.0.2.1)
47
- activesupport (= 6.0.2.1)
46
+ activejob (6.0.4.4)
47
+ activesupport (= 6.0.4.4)
48
48
  globalid (>= 0.3.6)
49
- activemodel (6.0.2.1)
50
- activesupport (= 6.0.2.1)
51
- activerecord (6.0.2.1)
52
- activemodel (= 6.0.2.1)
53
- activesupport (= 6.0.2.1)
54
- activestorage (6.0.2.1)
55
- actionpack (= 6.0.2.1)
56
- activejob (= 6.0.2.1)
57
- activerecord (= 6.0.2.1)
58
- marcel (~> 0.3.1)
59
- activesupport (6.0.2.1)
49
+ activemodel (6.0.4.4)
50
+ activesupport (= 6.0.4.4)
51
+ activerecord (6.0.4.4)
52
+ activemodel (= 6.0.4.4)
53
+ activesupport (= 6.0.4.4)
54
+ activestorage (6.0.4.4)
55
+ actionpack (= 6.0.4.4)
56
+ activejob (= 6.0.4.4)
57
+ activerecord (= 6.0.4.4)
58
+ marcel (~> 1.0.0)
59
+ activesupport (6.0.4.4)
60
60
  concurrent-ruby (~> 1.0, >= 1.0.2)
61
61
  i18n (>= 0.7, < 2)
62
62
  minitest (~> 5.1)
63
63
  tzinfo (~> 1.1)
64
- zeitwerk (~> 2.2)
64
+ zeitwerk (~> 2.2, >= 2.2.2)
65
65
  builder (3.2.4)
66
66
  byebug (11.1.1)
67
- combustion (1.1.2)
67
+ combustion (1.3.5)
68
68
  activesupport (>= 3.0.0)
69
69
  railties (>= 3.0.0)
70
70
  thor (>= 0.14.6)
71
- concurrent-ruby (1.1.6)
71
+ concurrent-ruby (1.1.9)
72
72
  crass (1.0.6)
73
73
  database_cleaner (1.8.3)
74
74
  diff-lcs (1.3)
75
- erubi (1.9.0)
76
- gemika (0.4.0)
77
- globalid (0.4.2)
78
- activesupport (>= 4.2.0)
79
- i18n (1.8.2)
75
+ erubi (1.10.0)
76
+ gemika (0.6.1)
77
+ globalid (1.0.0)
78
+ activesupport (>= 5.0)
79
+ i18n (1.8.11)
80
80
  concurrent-ruby (~> 1.0)
81
- loofah (2.4.0)
81
+ loofah (2.13.0)
82
82
  crass (~> 1.0.2)
83
83
  nokogiri (>= 1.5.9)
84
84
  mail (2.7.1)
85
85
  mini_mime (>= 0.1.1)
86
- marcel (0.3.3)
87
- mimemagic (~> 0.3.2)
86
+ marcel (1.0.2)
88
87
  method_source (1.0.0)
89
- mimemagic (0.3.4)
90
- mini_mime (1.0.2)
91
- mini_portile2 (2.4.0)
92
- minitest (5.14.0)
88
+ mini_mime (1.1.2)
89
+ mini_portile2 (2.6.1)
90
+ minitest (5.15.0)
93
91
  mysql2 (0.5.3)
94
- nio4r (2.5.2)
95
- nokogiri (1.10.9)
96
- mini_portile2 (~> 2.4.0)
97
- rack (2.2.2)
92
+ nio4r (2.5.8)
93
+ nokogiri (1.12.5)
94
+ mini_portile2 (~> 2.6.1)
95
+ racc (~> 1.4)
96
+ racc (1.6.0)
97
+ rack (2.2.3)
98
98
  rack-test (1.1.0)
99
99
  rack (>= 1.0, < 3)
100
- rails (6.0.2.1)
101
- actioncable (= 6.0.2.1)
102
- actionmailbox (= 6.0.2.1)
103
- actionmailer (= 6.0.2.1)
104
- actionpack (= 6.0.2.1)
105
- actiontext (= 6.0.2.1)
106
- actionview (= 6.0.2.1)
107
- activejob (= 6.0.2.1)
108
- activemodel (= 6.0.2.1)
109
- activerecord (= 6.0.2.1)
110
- activestorage (= 6.0.2.1)
111
- activesupport (= 6.0.2.1)
100
+ rails (6.0.4.4)
101
+ actioncable (= 6.0.4.4)
102
+ actionmailbox (= 6.0.4.4)
103
+ actionmailer (= 6.0.4.4)
104
+ actionpack (= 6.0.4.4)
105
+ actiontext (= 6.0.4.4)
106
+ actionview (= 6.0.4.4)
107
+ activejob (= 6.0.4.4)
108
+ activemodel (= 6.0.4.4)
109
+ activerecord (= 6.0.4.4)
110
+ activestorage (= 6.0.4.4)
111
+ activesupport (= 6.0.4.4)
112
112
  bundler (>= 1.3.0)
113
- railties (= 6.0.2.1)
113
+ railties (= 6.0.4.4)
114
114
  sprockets-rails (>= 2.0.0)
115
115
  rails-dom-testing (2.0.3)
116
116
  activesupport (>= 4.2.0)
117
117
  nokogiri (>= 1.6)
118
- rails-html-sanitizer (1.3.0)
118
+ rails-html-sanitizer (1.4.2)
119
119
  loofah (~> 2.3)
120
- railties (6.0.2.1)
121
- actionpack (= 6.0.2.1)
122
- activesupport (= 6.0.2.1)
120
+ railties (6.0.4.4)
121
+ actionpack (= 6.0.4.4)
122
+ activesupport (= 6.0.4.4)
123
123
  method_source
124
124
  rake (>= 0.8.7)
125
125
  thor (>= 0.20.3, < 2.0)
126
- rake (13.0.1)
126
+ rake (13.0.6)
127
127
  rspec (3.9.0)
128
128
  rspec-core (~> 3.9.0)
129
129
  rspec-expectations (~> 3.9.0)
@@ -137,21 +137,21 @@ GEM
137
137
  diff-lcs (>= 1.2.0, < 2.0)
138
138
  rspec-support (~> 3.9.0)
139
139
  rspec-support (3.9.2)
140
- sprockets (4.0.0)
140
+ sprockets (4.0.2)
141
141
  concurrent-ruby (~> 1.0)
142
142
  rack (> 1, < 3)
143
- sprockets-rails (3.2.1)
144
- actionpack (>= 4.0)
145
- activesupport (>= 4.0)
143
+ sprockets-rails (3.4.2)
144
+ actionpack (>= 5.2)
145
+ activesupport (>= 5.2)
146
146
  sprockets (>= 3.0.0)
147
- thor (1.0.1)
147
+ thor (1.1.0)
148
148
  thread_safe (0.3.6)
149
- tzinfo (1.2.6)
149
+ tzinfo (1.2.9)
150
150
  thread_safe (~> 0.1)
151
- websocket-driver (0.7.1)
151
+ websocket-driver (0.7.5)
152
152
  websocket-extensions (>= 0.1.0)
153
- websocket-extensions (0.1.4)
154
- zeitwerk (2.3.0)
153
+ websocket-extensions (0.1.5)
154
+ zeitwerk (2.5.3)
155
155
 
156
156
  PLATFORMS
157
157
  ruby
@@ -168,4 +168,4 @@ DEPENDENCIES
168
168
  temporal_tables!
169
169
 
170
170
  BUNDLED WITH
171
- 2.0.1
171
+ 2.3.4