temporal_tables 0.7.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) 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 -7
  6. data/Gemfile +2 -0
  7. data/README.md +21 -5
  8. data/Rakefile +7 -2
  9. data/config.ru +2 -0
  10. data/gemfiles/Gemfile.6.0.mysql +1 -1
  11. data/gemfiles/Gemfile.6.0.mysql.lock +104 -104
  12. data/gemfiles/Gemfile.6.0.pg +1 -1
  13. data/gemfiles/Gemfile.6.0.pg.lock +110 -105
  14. data/gemfiles/{Gemfile.5.1.mysql → Gemfile.6.1.mysql} +2 -2
  15. data/gemfiles/Gemfile.6.1.mysql.lock +180 -0
  16. data/gemfiles/{Gemfile.5.2.pg → Gemfile.6.1.pg} +1 -1
  17. data/gemfiles/Gemfile.6.1.pg.lock +180 -0
  18. data/gemfiles/{Gemfile.5.0.mysql → Gemfile.7.0.mysql} +2 -2
  19. data/gemfiles/Gemfile.7.0.mysql.lock +173 -0
  20. data/gemfiles/{Gemfile.5.1.pg → Gemfile.7.0.pg} +1 -1
  21. data/gemfiles/Gemfile.7.0.pg.lock +173 -0
  22. data/lib/temporal_tables/arel_table.rb +11 -10
  23. data/lib/temporal_tables/association_extensions.rb +2 -0
  24. data/lib/temporal_tables/connection_adapters/mysql_adapter.rb +5 -3
  25. data/lib/temporal_tables/connection_adapters/postgresql_adapter.rb +5 -3
  26. data/lib/temporal_tables/history_hook.rb +8 -5
  27. data/lib/temporal_tables/preloader_extensions.rb +2 -0
  28. data/lib/temporal_tables/reflection_extensions.rb +11 -14
  29. data/lib/temporal_tables/relation_extensions.rb +11 -24
  30. data/lib/temporal_tables/temporal_adapter.rb +82 -88
  31. data/lib/temporal_tables/temporal_class.rb +29 -28
  32. data/lib/temporal_tables/version.rb +3 -1
  33. data/lib/temporal_tables/whodunnit.rb +5 -3
  34. data/lib/temporal_tables.rb +42 -32
  35. data/spec/basic_history_spec.rb +65 -35
  36. data/spec/internal/app/models/broom.rb +2 -0
  37. data/spec/internal/app/models/cat.rb +5 -0
  38. data/spec/internal/app/models/cat_life.rb +5 -0
  39. data/spec/internal/app/models/coven.rb +2 -0
  40. data/spec/internal/app/models/flying_machine.rb +2 -0
  41. data/spec/internal/app/models/person.rb +2 -0
  42. data/spec/internal/app/models/rocket_broom.rb +2 -0
  43. data/spec/internal/app/models/wart.rb +3 -1
  44. data/spec/internal/config/database.ci.yml +12 -0
  45. data/spec/internal/db/schema.rb +22 -0
  46. data/spec/spec_helper.rb +39 -5
  47. data/spec/support/database.rb +10 -6
  48. data/temporal_tables.gemspec +31 -18
  49. metadata +111 -41
  50. data/CHANGELOG.md +0 -73
  51. data/gemfiles/Gemfile.5.0.mysql.lock +0 -147
  52. data/gemfiles/Gemfile.5.0.pg +0 -16
  53. data/gemfiles/Gemfile.5.0.pg.lock +0 -147
  54. data/gemfiles/Gemfile.5.1.mysql.lock +0 -147
  55. data/gemfiles/Gemfile.5.1.pg.lock +0 -147
  56. data/gemfiles/Gemfile.5.2.mysql +0 -16
  57. data/gemfiles/Gemfile.5.2.mysql.lock +0 -155
  58. data/gemfiles/Gemfile.5.2.pg.lock +0 -155
  59. data/lib/temporal_tables/join_extensions.rb +0 -20
  60. data/spec/extensions/combustion.rb +0 -9
  61. data/spec/internal/config/routes.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55f7a578768440a6fdc770e81ad15f2a8e29797e399325ddd3fc9e2424f65b11
4
- data.tar.gz: ad7a2f9d0a3a78111484ad178501d3d35c965e11dbdf2954641c384291142c5a
3
+ metadata.gz: ca70c4c007415e5835f5730f6e75f50c35c4df2d25ae815b6b40dd180609f3bc
4
+ data.tar.gz: 2d65f6d907abef85e2746af4090b0e03a4da70ccf6bc2bbff988440996aab48c
5
5
  SHA512:
6
- metadata.gz: 3185691e58dc83ed24bad103ded115f8ac1d49c4f2f2ac68229c7157493ae1a31a8c37fbd5354922a74c172b8516d797a70339b62d5d4004d7c2ca800cbe5051
7
- data.tar.gz: 00372454aa452460c4e4ad66ab62202c549ba729823bed275bafc9c7f5c40ee6fdf9d6769d8439ca5273c5a9f20742f02d7049663853e9e89b2d913bd6712645
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,13 +1,11 @@
1
1
  rvm:
2
- - 2.5.4
2
+ - 3.0.0
3
3
 
4
4
  gemfile:
5
- - gemfiles/Gemfile.5.0.pg
6
- - gemfiles/Gemfile.5.1.pg
7
- - gemfiles/Gemfile.5.2.pg
8
5
  - gemfiles/Gemfile.6.0.pg
6
+ - gemfiles/Gemfile.6.1.pg
7
+ - gemfiles/Gemfile.7.0.pg
9
8
 
10
- - gemfiles/Gemfile.5.0.mysql
11
- - gemfiles/Gemfile.5.1.mysql
12
- - gemfiles/Gemfile.5.2.mysql
13
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.0 - 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.
@@ -143,5 +153,11 @@ Add an `updated_by` column to all temporal tables to track who made any changes,
143
153
  TemporalTables.add_updated_by_field(:integer) { User.current_user&.id }
144
154
  ```
145
155
 
156
+ ## Development
157
+
158
+ To add a new version of rails to the specs, create corresponding Gemfiles in the `gemfiles/` directory, and add references to them in `.travis.yml`.
159
+
160
+ To run specs, run `rake matrix:install` and `rake matrix:spec`.
161
+
146
162
  ## Copyright
147
163
  See [LICENSE](https://github.com/bkroeker/temporal_tables/blob/master/LICENSE.txt) for more details.
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,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Runtime dependencies
4
- gem 'rails', '~> 6.0.0'
4
+ gem 'rails', '~> 6.0.2'
5
5
  gem 'mysql2'
6
6
 
7
7
  # Development dependencies
@@ -1,157 +1,157 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- temporal_tables (0.7.0)
5
- rails (>= 5.0, <= 6.0)
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.0)
11
- actionpack (= 6.0.0)
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.0)
15
- actionpack (= 6.0.0)
16
- activejob (= 6.0.0)
17
- activerecord (= 6.0.0)
18
- activestorage (= 6.0.0)
19
- activesupport (= 6.0.0)
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.0)
22
- actionpack (= 6.0.0)
23
- actionview (= 6.0.0)
24
- activejob (= 6.0.0)
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.0)
28
- actionview (= 6.0.0)
29
- activesupport (= 6.0.0)
30
- rack (~> 2.0)
27
+ actionpack (6.0.4.4)
28
+ actionview (= 6.0.4.4)
29
+ activesupport (= 6.0.4.4)
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.0)
35
- actionpack (= 6.0.0)
36
- activerecord (= 6.0.0)
37
- activestorage (= 6.0.0)
38
- activesupport (= 6.0.0)
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.0)
41
- activesupport (= 6.0.0)
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.0)
47
- activesupport (= 6.0.0)
46
+ activejob (6.0.4.4)
47
+ activesupport (= 6.0.4.4)
48
48
  globalid (>= 0.3.6)
49
- activemodel (6.0.0)
50
- activesupport (= 6.0.0)
51
- activerecord (6.0.0)
52
- activemodel (= 6.0.0)
53
- activesupport (= 6.0.0)
54
- activestorage (6.0.0)
55
- actionpack (= 6.0.0)
56
- activejob (= 6.0.0)
57
- activerecord (= 6.0.0)
58
- marcel (~> 0.3.1)
59
- activesupport (6.0.0)
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.1, >= 2.1.8)
65
- builder (3.2.3)
66
- byebug (11.0.1)
67
- combustion (1.1.1)
64
+ zeitwerk (~> 2.2, >= 2.2.2)
65
+ builder (3.2.4)
66
+ byebug (11.1.1)
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.5)
72
- crass (1.0.4)
73
- database_cleaner (1.7.0)
71
+ concurrent-ruby (1.1.9)
72
+ crass (1.0.6)
73
+ database_cleaner (1.8.3)
74
74
  diff-lcs (1.3)
75
- erubi (1.8.0)
76
- gemika (0.4.0)
77
- globalid (0.4.2)
78
- activesupport (>= 4.2.0)
79
- i18n (1.6.0)
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.2.3)
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)
88
- method_source (0.9.2)
89
- mimemagic (0.3.3)
90
- mini_mime (1.0.2)
91
- mini_portile2 (2.4.0)
92
- minitest (5.11.3)
93
- mysql2 (0.5.2)
94
- nio4r (2.5.1)
95
- nokogiri (1.10.4)
96
- mini_portile2 (~> 2.4.0)
97
- rack (2.0.7)
86
+ marcel (1.0.2)
87
+ method_source (1.0.0)
88
+ mini_mime (1.1.2)
89
+ mini_portile2 (2.6.1)
90
+ minitest (5.15.0)
91
+ mysql2 (0.5.3)
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.0)
101
- actioncable (= 6.0.0)
102
- actionmailbox (= 6.0.0)
103
- actionmailer (= 6.0.0)
104
- actionpack (= 6.0.0)
105
- actiontext (= 6.0.0)
106
- actionview (= 6.0.0)
107
- activejob (= 6.0.0)
108
- activemodel (= 6.0.0)
109
- activerecord (= 6.0.0)
110
- activestorage (= 6.0.0)
111
- activesupport (= 6.0.0)
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.0)
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.2.0)
119
- loofah (~> 2.2, >= 2.2.2)
120
- railties (6.0.0)
121
- actionpack (= 6.0.0)
122
- activesupport (= 6.0.0)
118
+ rails-html-sanitizer (1.4.2)
119
+ loofah (~> 2.3)
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 (12.3.3)
127
- rspec (3.8.0)
128
- rspec-core (~> 3.8.0)
129
- rspec-expectations (~> 3.8.0)
130
- rspec-mocks (~> 3.8.0)
131
- rspec-core (3.8.2)
132
- rspec-support (~> 3.8.0)
133
- rspec-expectations (3.8.4)
126
+ rake (13.0.6)
127
+ rspec (3.9.0)
128
+ rspec-core (~> 3.9.0)
129
+ rspec-expectations (~> 3.9.0)
130
+ rspec-mocks (~> 3.9.0)
131
+ rspec-core (3.9.1)
132
+ rspec-support (~> 3.9.1)
133
+ rspec-expectations (3.9.1)
134
134
  diff-lcs (>= 1.2.0, < 2.0)
135
- rspec-support (~> 3.8.0)
136
- rspec-mocks (3.8.1)
135
+ rspec-support (~> 3.9.0)
136
+ rspec-mocks (3.9.1)
137
137
  diff-lcs (>= 1.2.0, < 2.0)
138
- rspec-support (~> 3.8.0)
139
- rspec-support (3.8.2)
140
- sprockets (3.7.2)
138
+ rspec-support (~> 3.9.0)
139
+ rspec-support (3.9.2)
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 (0.20.3)
147
+ thor (1.1.0)
148
148
  thread_safe (0.3.6)
149
- tzinfo (1.2.5)
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.1.9)
153
+ websocket-extensions (0.1.5)
154
+ zeitwerk (2.5.3)
155
155
 
156
156
  PLATFORMS
157
157
  ruby
@@ -162,10 +162,10 @@ DEPENDENCIES
162
162
  database_cleaner
163
163
  gemika
164
164
  mysql2
165
- rails (~> 6.0.0)
165
+ rails (~> 6.0.2)
166
166
  rake
167
167
  rspec (~> 3.4)
168
168
  temporal_tables!
169
169
 
170
170
  BUNDLED WITH
171
- 2.0.1
171
+ 2.3.4
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Runtime dependencies
4
- gem 'rails', '~> 6.0.0'
4
+ gem 'rails', '~> 6.0.2'
5
5
  gem 'pg', '>= 0.18', '< 2.0'
6
6
 
7
7
  # Development dependencies