temporal_tables 0.8.1 → 1.0.1

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