active_recall 2.0.2 → 2.1.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: 8709001a31591b453227c504d7f96684f924ac267d6c380ab8c5e6b86913b24c
4
- data.tar.gz: 5efe33c2262b0b4549ff9f59c24ce504f65a798f5b2af1068bb10a419a7c182a
3
+ metadata.gz: 1145dd0124d31f1cd1d200170e3956b20818e73bd2d1fedb4ceacf4f82a8f4ba
4
+ data.tar.gz: b4b8e2c1d1edd66cc0c756200b525aec806468c7f95626c257bd95f369d56037
5
5
  SHA512:
6
- metadata.gz: f430431bf3ee4fd729c39a94915ad6b29750277631f5e85700684a464a71f633872033f69fcb763b01f3f2376afb0fbac7051b382ddc4843fe149502e2a9119a
7
- data.tar.gz: '06837043f0e1290b99fea84f6ed317263f2155d10619e9ab08dac06bd6c9807703863848b1311216d08a23e3254176a03e76cc3c045fdd96f4e0de00db8d09bd'
6
+ metadata.gz: e94584e1041b5f695ab3ec0d24a87a7c3a4abf200fb11c7951917f98cbd84f9e24225b52a6c45d393fe31beb76e08a9ac683266cd191f7ec5cacd78644b8ed68
7
+ data.tar.gz: 6979b3ac85b8cd12751566161bfa2d55ca5832fc82693a92469f3844ec481d86c4bda05fc709fcbb2ea8f3dbc84959a8d342a683ce6e936a05ab235c278a66df
@@ -19,8 +19,6 @@ jobs:
19
19
  - macos
20
20
  - ubuntu
21
21
  ruby:
22
- - 3.0
23
- - 3.1
24
22
  - 3.2
25
23
  - 3.3
26
24
  allow_failures:
@@ -40,11 +38,9 @@ jobs:
40
38
  bundler-cache: true
41
39
  - name: Install Appraisal Dependencies
42
40
  run: bundle exec appraisal install
43
- - name: Test with Rails 6.0
44
- run: bundle exec appraisal rails-6-0 rake spec
45
- - name: Test with Rails 6.1
46
- run: bundle exec appraisal rails-6-1 rake spec
47
- - name: Test with Rails 7.0
48
- run: bundle exec appraisal rails-7-0 rake spec
49
41
  - name: Test with Rails 7.0
50
42
  run: bundle exec appraisal rails-7-0 rake spec
43
+ - name: Test with Rails 7.1
44
+ run: bundle exec appraisal rails-7-1 rake spec
45
+ - name: Test with Rails 8.0
46
+ run: bundle exec appraisal rails-8-0 rake spec
data/.gitignore CHANGED
@@ -13,6 +13,6 @@ rdoc
13
13
  spec/reports
14
14
  test/tmp
15
15
  test/version_tmp
16
- tmp
17
16
  .idea/
18
17
  .DS_Store
18
+ tmp
data/Appraisals CHANGED
@@ -1,15 +1,14 @@
1
- appraise "rails-6-0" do
2
- gem "rails", "~> 6.0"
3
- end
4
-
5
- appraise "rails-6-1" do
6
- gem "rails", "~> 6.1"
7
- end
8
-
9
1
  appraise "rails-7-0" do
10
2
  gem "rails", "~> 7.0"
3
+ gem "sqlite3", "~> 1.4"
11
4
  end
12
5
 
13
6
  appraise "rails-7-1" do
14
7
  gem "rails", "~> 7.1"
8
+ gem "sqlite3", "~> 1.4"
9
+ end
10
+
11
+ appraise "rails-8-0" do
12
+ gem "rails", "~> 8.0"
13
+ gem "sqlite3", ">= 2.1"
15
14
  end
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_recall (2.0.2)
5
- activerecord (>= 6.0, <= 7.2)
6
- activesupport (>= 6.0, <= 7.2)
4
+ active_recall (2.1.0)
5
+ activerecord (>= 7.0, < 9.0)
6
+ activesupport (>= 7.0, < 9.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -217,7 +217,9 @@ GEM
217
217
  rubocop-ast (>= 1.30.0, < 2.0)
218
218
  ruby-progressbar (1.13.0)
219
219
  ruby2_keywords (0.0.5)
220
- sqlite3 (1.4.2)
220
+ sqlite3 (2.5.0)
221
+ mini_portile2 (~> 2.8.0)
222
+ sqlite3 (2.5.0-x86_64-linux-gnu)
221
223
  standard (1.35.1)
222
224
  language_server-protocol (~> 3.17.0.2)
223
225
  lint_roller (~> 1.0)
@@ -248,11 +250,11 @@ PLATFORMS
248
250
  DEPENDENCIES
249
251
  active_recall!
250
252
  appraisal
251
- rails (>= 6.0, <= 7.2)
253
+ rails (>= 7.0, < 9.0)
252
254
  rake (>= 12.0)
253
255
  rdoc
254
256
  rspec (>= 3.0)
255
- sqlite3
257
+ sqlite3 (~> 2.1)
256
258
  standard
257
259
 
258
260
  BUNDLED WITH
@@ -33,13 +33,13 @@ Gem::Specification.new do |spec|
33
33
  spec.require_paths = ["lib"]
34
34
 
35
35
  spec.add_development_dependency "appraisal"
36
- spec.add_development_dependency "rails", ">= 6.0", "<= 7.2"
36
+ spec.add_development_dependency "rails", ">= 7.0", "< 9.0"
37
37
  spec.add_development_dependency "rake", ">= 12.0"
38
38
  spec.add_development_dependency "rdoc"
39
39
  spec.add_development_dependency "rspec", ">= 3.0"
40
- spec.add_development_dependency "sqlite3"
40
+ spec.add_development_dependency "sqlite3", "~> 2.1"
41
41
  spec.add_development_dependency "standard"
42
- spec.add_runtime_dependency "activerecord", ">= 6.0", "<= 7.2"
43
- spec.add_runtime_dependency "activesupport", ">= 6.0", "<= 7.2"
44
- spec.required_ruby_version = ">= 3.0"
42
+ spec.add_runtime_dependency "activerecord", ">= 7.0", "< 9.0"
43
+ spec.add_runtime_dependency "activesupport", ">= 7.0", "< 9.0"
44
+ spec.required_ruby_version = ">= 3.2"
45
45
  end
data/bin/flatten ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fileutils'
4
+
5
+ app_root = Dir.pwd
6
+ app_name = File.basename(app_root)
7
+
8
+ # Create tmp directory
9
+ tmp_dir = File.join(app_root, 'tmp')
10
+ FileUtils.mkdir_p(tmp_dir)
11
+
12
+ # Define directories and file patterns to include in the search, excluding specific files and directories
13
+ include_patterns = [
14
+ File.join(app_root, 'bin', '**', '*'),
15
+ File.join(app_root, 'lib', '**', '*'),
16
+ File.join(app_root, 'spec', '**', '*'),
17
+ File.join(app_root, '.github', '**', '*'),
18
+ File.join(app_root, '*.{md,rss,json,rb,gemspec,lock,yml,gitignore,rspec,tool-versions,Appraisals,Rakefile}')
19
+ ]
20
+
21
+ # Find all matching files
22
+ files = include_patterns.flat_map { |pattern| Dir.glob(pattern, File::FNM_DOTMATCH) }
23
+ files.select! { |f| File.file?(f) }
24
+
25
+ # Exclude the gemfiles directory and the top-level Gemfile.lock
26
+ files.reject! do |file|
27
+ file.start_with?(File.join(app_root, 'gemfiles')) || file == File.join(app_root, 'Gemfile.lock')
28
+ end
29
+
30
+ # Output file
31
+ output_file = File.join(tmp_dir, "#{app_name}_flat_file.txt")
32
+
33
+ File.open(output_file, 'w') do |file|
34
+ files.each do |file_path|
35
+ relative_path = file_path.sub("#{app_root}/", '')
36
+ extension = File.extname(file_path).delete_prefix('.')
37
+
38
+ file.puts "#{relative_path}:"
39
+
40
+ content = File.read(file_path)
41
+ if extension == 'md'
42
+ file.puts content
43
+ else
44
+ file.puts "```#{extension}"
45
+ file.puts content
46
+ file.puts "```"
47
+ end
48
+
49
+ file.puts ""
50
+ end
51
+ end
52
+
53
+ # Print the path to the generated flat file
54
+ puts "Flat file created at: #{output_file}"
@@ -3,5 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 7.0"
6
+ gem "sqlite3", "~> 1.4"
6
7
 
7
8
  gemspec path: "../"
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- active_recall (2.0.2)
5
- activerecord (>= 6.0, <= 7.2)
6
- activesupport (>= 6.0, <= 7.2)
4
+ active_recall (2.1.0)
5
+ activerecord (>= 7.0, < 9.0)
6
+ activesupport (>= 7.0, < 9.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -216,7 +216,7 @@ GEM
216
216
  rubocop-ast (>= 1.30.0, < 2.0)
217
217
  ruby-progressbar (1.13.0)
218
218
  ruby2_keywords (0.0.5)
219
- sqlite3 (1.7.1-arm64-darwin)
219
+ sqlite3 (1.7.3-arm64-darwin)
220
220
  standard (1.35.1)
221
221
  language_server-protocol (~> 3.17.0.2)
222
222
  lint_roller (~> 1.0)
@@ -251,7 +251,7 @@ DEPENDENCIES
251
251
  rake (>= 12.0)
252
252
  rdoc
253
253
  rspec (>= 3.0)
254
- sqlite3
254
+ sqlite3 (~> 1.4)
255
255
  standard
256
256
 
257
257
  BUNDLED WITH
@@ -3,5 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 7.1"
6
+ gem "sqlite3", "~> 1.4"
6
7
 
7
8
  gemspec path: "../"
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- active_recall (2.0.2)
5
- activerecord (>= 6.0, <= 7.2)
6
- activesupport (>= 6.0, <= 7.2)
4
+ active_recall (2.1.0)
5
+ activerecord (>= 7.0, < 9.0)
6
+ activesupport (>= 7.0, < 9.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -216,7 +216,7 @@ GEM
216
216
  rubocop-ast (>= 1.30.0, < 2.0)
217
217
  ruby-progressbar (1.13.0)
218
218
  ruby2_keywords (0.0.5)
219
- sqlite3 (1.7.1-arm64-darwin)
219
+ sqlite3 (1.7.3-arm64-darwin)
220
220
  standard (1.35.1)
221
221
  language_server-protocol (~> 3.17.0.2)
222
222
  lint_roller (~> 1.0)
@@ -251,7 +251,7 @@ DEPENDENCIES
251
251
  rake (>= 12.0)
252
252
  rdoc
253
253
  rspec (>= 3.0)
254
- sqlite3
254
+ sqlite3 (~> 1.4)
255
255
  standard
256
256
 
257
257
  BUNDLED WITH
@@ -2,6 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 6.0"
5
+ gem "rails", "~> 8.0"
6
+ gem "sqlite3", ">= 2.1"
6
7
 
7
8
  gemspec path: "../"
@@ -0,0 +1,258 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ active_recall (2.1.0)
5
+ activerecord (>= 7.0, < 9.0)
6
+ activesupport (>= 7.0, < 9.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actioncable (8.0.1)
12
+ actionpack (= 8.0.1)
13
+ activesupport (= 8.0.1)
14
+ nio4r (~> 2.0)
15
+ websocket-driver (>= 0.6.1)
16
+ zeitwerk (~> 2.6)
17
+ actionmailbox (8.0.1)
18
+ actionpack (= 8.0.1)
19
+ activejob (= 8.0.1)
20
+ activerecord (= 8.0.1)
21
+ activestorage (= 8.0.1)
22
+ activesupport (= 8.0.1)
23
+ mail (>= 2.8.0)
24
+ actionmailer (8.0.1)
25
+ actionpack (= 8.0.1)
26
+ actionview (= 8.0.1)
27
+ activejob (= 8.0.1)
28
+ activesupport (= 8.0.1)
29
+ mail (>= 2.8.0)
30
+ rails-dom-testing (~> 2.2)
31
+ actionpack (8.0.1)
32
+ actionview (= 8.0.1)
33
+ activesupport (= 8.0.1)
34
+ nokogiri (>= 1.8.5)
35
+ rack (>= 2.2.4)
36
+ rack-session (>= 1.0.1)
37
+ rack-test (>= 0.6.3)
38
+ rails-dom-testing (~> 2.2)
39
+ rails-html-sanitizer (~> 1.6)
40
+ useragent (~> 0.16)
41
+ actiontext (8.0.1)
42
+ actionpack (= 8.0.1)
43
+ activerecord (= 8.0.1)
44
+ activestorage (= 8.0.1)
45
+ activesupport (= 8.0.1)
46
+ globalid (>= 0.6.0)
47
+ nokogiri (>= 1.8.5)
48
+ actionview (8.0.1)
49
+ activesupport (= 8.0.1)
50
+ builder (~> 3.1)
51
+ erubi (~> 1.11)
52
+ rails-dom-testing (~> 2.2)
53
+ rails-html-sanitizer (~> 1.6)
54
+ activejob (8.0.1)
55
+ activesupport (= 8.0.1)
56
+ globalid (>= 0.3.6)
57
+ activemodel (8.0.1)
58
+ activesupport (= 8.0.1)
59
+ activerecord (8.0.1)
60
+ activemodel (= 8.0.1)
61
+ activesupport (= 8.0.1)
62
+ timeout (>= 0.4.0)
63
+ activestorage (8.0.1)
64
+ actionpack (= 8.0.1)
65
+ activejob (= 8.0.1)
66
+ activerecord (= 8.0.1)
67
+ activesupport (= 8.0.1)
68
+ marcel (~> 1.0)
69
+ activesupport (8.0.1)
70
+ base64
71
+ benchmark (>= 0.3)
72
+ bigdecimal
73
+ concurrent-ruby (~> 1.0, >= 1.3.1)
74
+ connection_pool (>= 2.2.5)
75
+ drb
76
+ i18n (>= 1.6, < 2)
77
+ logger (>= 1.4.2)
78
+ minitest (>= 5.1)
79
+ securerandom (>= 0.3)
80
+ tzinfo (~> 2.0, >= 2.0.5)
81
+ uri (>= 0.13.1)
82
+ appraisal (2.5.0)
83
+ bundler
84
+ rake
85
+ thor (>= 0.14.0)
86
+ ast (2.4.2)
87
+ base64 (0.2.0)
88
+ benchmark (0.4.0)
89
+ bigdecimal (3.1.9)
90
+ builder (3.3.0)
91
+ concurrent-ruby (1.3.4)
92
+ connection_pool (2.4.1)
93
+ crass (1.0.6)
94
+ date (3.4.1)
95
+ diff-lcs (1.5.1)
96
+ drb (2.2.1)
97
+ erubi (1.13.1)
98
+ globalid (1.2.1)
99
+ activesupport (>= 6.1)
100
+ i18n (1.14.6)
101
+ concurrent-ruby (~> 1.0)
102
+ io-console (0.8.0)
103
+ irb (1.14.3)
104
+ rdoc (>= 4.0.0)
105
+ reline (>= 0.4.2)
106
+ json (2.9.1)
107
+ language_server-protocol (3.17.0.3)
108
+ lint_roller (1.1.0)
109
+ logger (1.6.4)
110
+ loofah (2.23.1)
111
+ crass (~> 1.0.2)
112
+ nokogiri (>= 1.12.0)
113
+ mail (2.8.1)
114
+ mini_mime (>= 0.1.1)
115
+ net-imap
116
+ net-pop
117
+ net-smtp
118
+ marcel (1.0.4)
119
+ mini_mime (1.1.5)
120
+ mini_portile2 (2.8.5)
121
+ minitest (5.25.4)
122
+ net-imap (0.5.4)
123
+ date
124
+ net-protocol
125
+ net-pop (0.1.2)
126
+ net-protocol
127
+ net-protocol (0.2.2)
128
+ timeout
129
+ net-smtp (0.5.0)
130
+ net-protocol
131
+ nio4r (2.7.4)
132
+ nokogiri (1.18.0-arm64-darwin)
133
+ racc (~> 1.4)
134
+ parallel (1.26.3)
135
+ parser (3.3.6.0)
136
+ ast (~> 2.4.1)
137
+ racc
138
+ psych (5.2.2)
139
+ date
140
+ stringio
141
+ racc (1.8.1)
142
+ rack (3.1.8)
143
+ rack-session (2.0.0)
144
+ rack (>= 3.0.0)
145
+ rack-test (2.2.0)
146
+ rack (>= 1.3)
147
+ rackup (2.2.1)
148
+ rack (>= 3)
149
+ rails (8.0.1)
150
+ actioncable (= 8.0.1)
151
+ actionmailbox (= 8.0.1)
152
+ actionmailer (= 8.0.1)
153
+ actionpack (= 8.0.1)
154
+ actiontext (= 8.0.1)
155
+ actionview (= 8.0.1)
156
+ activejob (= 8.0.1)
157
+ activemodel (= 8.0.1)
158
+ activerecord (= 8.0.1)
159
+ activestorage (= 8.0.1)
160
+ activesupport (= 8.0.1)
161
+ bundler (>= 1.15.0)
162
+ railties (= 8.0.1)
163
+ rails-dom-testing (2.2.0)
164
+ activesupport (>= 5.0.0)
165
+ minitest
166
+ nokogiri (>= 1.6)
167
+ rails-html-sanitizer (1.6.2)
168
+ loofah (~> 2.21)
169
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
170
+ railties (8.0.1)
171
+ actionpack (= 8.0.1)
172
+ activesupport (= 8.0.1)
173
+ irb (~> 1.13)
174
+ rackup (>= 1.0.0)
175
+ rake (>= 12.2)
176
+ thor (~> 1.0, >= 1.2.2)
177
+ zeitwerk (~> 2.6)
178
+ rainbow (3.1.1)
179
+ rake (13.2.1)
180
+ rdoc (6.10.0)
181
+ psych (>= 4.0.0)
182
+ regexp_parser (2.10.0)
183
+ reline (0.6.0)
184
+ io-console (~> 0.5)
185
+ rspec (3.13.0)
186
+ rspec-core (~> 3.13.0)
187
+ rspec-expectations (~> 3.13.0)
188
+ rspec-mocks (~> 3.13.0)
189
+ rspec-core (3.13.2)
190
+ rspec-support (~> 3.13.0)
191
+ rspec-expectations (3.13.3)
192
+ diff-lcs (>= 1.2.0, < 2.0)
193
+ rspec-support (~> 3.13.0)
194
+ rspec-mocks (3.13.2)
195
+ diff-lcs (>= 1.2.0, < 2.0)
196
+ rspec-support (~> 3.13.0)
197
+ rspec-support (3.13.2)
198
+ rubocop (1.69.2)
199
+ json (~> 2.3)
200
+ language_server-protocol (>= 3.17.0)
201
+ parallel (~> 1.10)
202
+ parser (>= 3.3.0.2)
203
+ rainbow (>= 2.2.2, < 4.0)
204
+ regexp_parser (>= 2.9.3, < 3.0)
205
+ rubocop-ast (>= 1.36.2, < 2.0)
206
+ ruby-progressbar (~> 1.7)
207
+ unicode-display_width (>= 2.4.0, < 4.0)
208
+ rubocop-ast (1.37.0)
209
+ parser (>= 3.3.1.0)
210
+ rubocop-performance (1.23.0)
211
+ rubocop (>= 1.48.1, < 2.0)
212
+ rubocop-ast (>= 1.31.1, < 2.0)
213
+ ruby-progressbar (1.13.0)
214
+ securerandom (0.4.1)
215
+ sqlite3 (2.5.0)
216
+ mini_portile2 (~> 2.8.0)
217
+ standard (1.43.0)
218
+ language_server-protocol (~> 3.17.0.2)
219
+ lint_roller (~> 1.0)
220
+ rubocop (~> 1.69.1)
221
+ standard-custom (~> 1.0.0)
222
+ standard-performance (~> 1.6)
223
+ standard-custom (1.0.2)
224
+ lint_roller (~> 1.0)
225
+ rubocop (~> 1.50)
226
+ standard-performance (1.6.0)
227
+ lint_roller (~> 1.1)
228
+ rubocop-performance (~> 1.23.0)
229
+ stringio (3.1.2)
230
+ thor (1.3.2)
231
+ timeout (0.4.3)
232
+ tzinfo (2.0.6)
233
+ concurrent-ruby (~> 1.0)
234
+ unicode-display_width (3.1.2)
235
+ unicode-emoji (~> 4.0, >= 4.0.4)
236
+ unicode-emoji (4.0.4)
237
+ uri (1.0.2)
238
+ useragent (0.16.11)
239
+ websocket-driver (0.7.6)
240
+ websocket-extensions (>= 0.1.0)
241
+ websocket-extensions (0.1.5)
242
+ zeitwerk (2.7.1)
243
+
244
+ PLATFORMS
245
+ arm64-darwin-23
246
+
247
+ DEPENDENCIES
248
+ active_recall!
249
+ appraisal
250
+ rails (~> 8.0)
251
+ rake (>= 12.0)
252
+ rdoc
253
+ rspec (>= 3.0)
254
+ sqlite3 (>= 2.1)
255
+ standard
256
+
257
+ BUNDLED WITH
258
+ 2.4.14
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module ActiveRecall
4
2
  class SM2
5
3
  MIN_EASINESS_FACTOR = 1.3
@@ -24,19 +22,24 @@ module ActiveRecall
24
22
  end
25
23
 
26
24
  def initialize(box:, easiness_factor:, times_right:, times_wrong:, grade:, current_time: Time.current)
27
- @box = box
25
+ @box = box # box serves as repetition number n
28
26
  @easiness_factor = easiness_factor || 2.5
29
27
  @times_right = times_right
30
28
  @times_wrong = times_wrong
31
29
  @grade = grade
32
30
  @current_time = current_time
33
- @interval = [1, box].max
31
+ @interval = case box
32
+ when 0 then 1 # First review
33
+ when 1 then 6 # Second review
34
+ else 17 # Will be overwritten for boxes > 1
35
+ end
34
36
  end
35
37
 
36
38
  def score
37
39
  raise "Grade must be between 0-5!" unless GRADES.include?(@grade)
40
+ old_ef = @easiness_factor
38
41
  update_easiness_factor
39
- update_repetition_and_interval
42
+ update_repetition_and_interval(old_ef)
40
43
 
41
44
  {
42
45
  box: @box,
@@ -51,13 +54,14 @@ module ActiveRecall
51
54
  private
52
55
 
53
56
  GRADES = [
54
- 5, # Perfect response. The learner recalls the information without hesitation.
55
- 4, # Correct response after a hesitation. The learner recalls the information but with some difficulty.
56
- 3, # Correct response recalled with serious difficulty. The learner struggles but eventually recalls the information.
57
- 2, # Incorrect response, but the learner was very close to the correct answer. This might involve recalling some of the information correctly but not all of it.
58
- 1, # Incorrect response, but the learner feels they should have remembered it. This is typically used when the learner has a sense of familiarity with the material but fails to recall it correctly.
59
- 0 # Complete blackout. The learner does not recall the information at all.
57
+ 5, # Perfect response
58
+ 4, # Correct response after a hesitation
59
+ 3, # Correct response recalled with serious difficulty
60
+ 2, # Incorrect response, but close
61
+ 1, # Incorrect response with familiarity
62
+ 0 # Complete blackout
60
63
  ].freeze
64
+
61
65
  REQUIRED_ATTRIBUTES = [
62
66
  :box,
63
67
  :easiness_factor,
@@ -71,22 +75,23 @@ module ActiveRecall
71
75
  @easiness_factor = [@easiness_factor, MIN_EASINESS_FACTOR].max
72
76
  end
73
77
 
74
- def update_repetition_and_interval
78
+ def update_repetition_and_interval(old_ef)
75
79
  if @grade >= 3
76
- @box += 1
77
- @times_right += 1
78
- @interval = case @box
79
- when 1
80
+ @interval = if @box == 0
80
81
  1
81
- when 2
82
+ elsif @box == 1
82
83
  6
83
84
  else
84
- (@interval || 1) * @easiness_factor
85
+ # Apply exponential scaling based on the box number
86
+ (6 * (old_ef**(@box - 1))).round
85
87
  end
88
+
89
+ @box += 1
90
+ @times_right += 1
86
91
  else
87
92
  @box = 0
88
- @times_wrong += 1
89
93
  @interval = 1
94
+ @times_wrong += 1
90
95
  end
91
96
  end
92
97
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecall
4
- VERSION = "2.0.2"
4
+ VERSION = "2.1.0"
5
5
  end
data/tmp/.gitkeep ADDED
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_recall
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Gravina
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-04-29 00:00:00.000000000 Z
12
+ date: 2024-12-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: appraisal
@@ -31,20 +31,20 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '6.0'
35
- - - "<="
34
+ version: '7.0'
35
+ - - "<"
36
36
  - !ruby/object:Gem::Version
37
- version: '7.2'
37
+ version: '9.0'
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: '6.0'
45
- - - "<="
44
+ version: '7.0'
45
+ - - "<"
46
46
  - !ruby/object:Gem::Version
47
- version: '7.2'
47
+ version: '9.0'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rake
50
50
  requirement: !ruby/object:Gem::Requirement
@@ -91,16 +91,16 @@ dependencies:
91
91
  name: sqlite3
92
92
  requirement: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '2.1'
97
97
  type: :development
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '2.1'
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: standard
106
106
  requirement: !ruby/object:Gem::Requirement
@@ -121,40 +121,40 @@ dependencies:
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '6.0'
125
- - - "<="
124
+ version: '7.0'
125
+ - - "<"
126
126
  - !ruby/object:Gem::Version
127
- version: '7.2'
127
+ version: '9.0'
128
128
  type: :runtime
129
129
  prerelease: false
130
130
  version_requirements: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - ">="
133
133
  - !ruby/object:Gem::Version
134
- version: '6.0'
135
- - - "<="
134
+ version: '7.0'
135
+ - - "<"
136
136
  - !ruby/object:Gem::Version
137
- version: '7.2'
137
+ version: '9.0'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: activesupport
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
- version: '6.0'
145
- - - "<="
144
+ version: '7.0'
145
+ - - "<"
146
146
  - !ruby/object:Gem::Version
147
- version: '7.2'
147
+ version: '9.0'
148
148
  type: :runtime
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - ">="
153
153
  - !ruby/object:Gem::Version
154
- version: '6.0'
155
- - - "<="
154
+ version: '7.0'
155
+ - - "<"
156
156
  - !ruby/object:Gem::Version
157
- version: '7.2'
157
+ version: '9.0'
158
158
  description: A spaced-repetition system to be used with ActiveRecord models
159
159
  email:
160
160
  - robert.gravina@gmail.com
@@ -175,17 +175,16 @@ files:
175
175
  - Rakefile
176
176
  - active_recall.gemspec
177
177
  - bin/console
178
+ - bin/flatten
178
179
  - bin/lint
179
180
  - bin/setup
180
181
  - bin/spec
181
- - gemfiles/rails_6_0.gemfile
182
- - gemfiles/rails_6_0.gemfile.lock
183
- - gemfiles/rails_6_1.gemfile
184
- - gemfiles/rails_6_1.gemfile.lock
185
182
  - gemfiles/rails_7_0.gemfile
186
183
  - gemfiles/rails_7_0.gemfile.lock
187
184
  - gemfiles/rails_7_1.gemfile
188
185
  - gemfiles/rails_7_1.gemfile.lock
186
+ - gemfiles/rails_8_0.gemfile
187
+ - gemfiles/rails_8_0.gemfile.lock
189
188
  - lib/active_recall.rb
190
189
  - lib/active_recall/algorithms/fibonacci_sequence.rb
191
190
  - lib/active_recall/algorithms/leitner_system.rb
@@ -204,6 +203,7 @@ files:
204
203
  - lib/generators/active_recall/templates/create_active_recall_tables.rb
205
204
  - lib/generators/active_recall/templates/migrate_okubo_to_active_recall.rb
206
205
  - standard.yml
206
+ - tmp/.gitkeep
207
207
  homepage: https://github.com/jaysonvirissimo/active_recall
208
208
  licenses:
209
209
  - MIT
@@ -217,7 +217,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
217
  requirements:
218
218
  - - ">="
219
219
  - !ruby/object:Gem::Version
220
- version: '3.0'
220
+ version: '3.2'
221
221
  required_rubygems_version: !ruby/object:Gem::Requirement
222
222
  requirements:
223
223
  - - ">="
@@ -1,231 +0,0 @@
1
- PATH
2
- remote: ..
3
- specs:
4
- active_recall (2.0.2)
5
- activerecord (>= 6.0, <= 7.2)
6
- activesupport (>= 6.0, <= 7.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actioncable (6.1.7.6)
12
- actionpack (= 6.1.7.6)
13
- activesupport (= 6.1.7.6)
14
- nio4r (~> 2.0)
15
- websocket-driver (>= 0.6.1)
16
- actionmailbox (6.1.7.6)
17
- actionpack (= 6.1.7.6)
18
- activejob (= 6.1.7.6)
19
- activerecord (= 6.1.7.6)
20
- activestorage (= 6.1.7.6)
21
- activesupport (= 6.1.7.6)
22
- mail (>= 2.7.1)
23
- actionmailer (6.1.7.6)
24
- actionpack (= 6.1.7.6)
25
- actionview (= 6.1.7.6)
26
- activejob (= 6.1.7.6)
27
- activesupport (= 6.1.7.6)
28
- mail (~> 2.5, >= 2.5.4)
29
- rails-dom-testing (~> 2.0)
30
- actionpack (6.1.7.6)
31
- actionview (= 6.1.7.6)
32
- activesupport (= 6.1.7.6)
33
- rack (~> 2.0, >= 2.0.9)
34
- rack-test (>= 0.6.3)
35
- rails-dom-testing (~> 2.0)
36
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
37
- actiontext (6.1.7.6)
38
- actionpack (= 6.1.7.6)
39
- activerecord (= 6.1.7.6)
40
- activestorage (= 6.1.7.6)
41
- activesupport (= 6.1.7.6)
42
- nokogiri (>= 1.8.5)
43
- actionview (6.1.7.6)
44
- activesupport (= 6.1.7.6)
45
- builder (~> 3.1)
46
- erubi (~> 1.4)
47
- rails-dom-testing (~> 2.0)
48
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
49
- activejob (6.1.7.6)
50
- activesupport (= 6.1.7.6)
51
- globalid (>= 0.3.6)
52
- activemodel (6.1.7.6)
53
- activesupport (= 6.1.7.6)
54
- activerecord (6.1.7.6)
55
- activemodel (= 6.1.7.6)
56
- activesupport (= 6.1.7.6)
57
- activestorage (6.1.7.6)
58
- actionpack (= 6.1.7.6)
59
- activejob (= 6.1.7.6)
60
- activerecord (= 6.1.7.6)
61
- activesupport (= 6.1.7.6)
62
- marcel (~> 1.0)
63
- mini_mime (>= 1.1.0)
64
- activesupport (6.1.7.6)
65
- concurrent-ruby (~> 1.0, >= 1.0.2)
66
- i18n (>= 1.6, < 2)
67
- minitest (>= 5.1)
68
- tzinfo (~> 2.0)
69
- zeitwerk (~> 2.3)
70
- appraisal (2.5.0)
71
- bundler
72
- rake
73
- thor (>= 0.14.0)
74
- ast (2.4.2)
75
- builder (3.2.4)
76
- concurrent-ruby (1.2.3)
77
- crass (1.0.6)
78
- date (3.3.4)
79
- diff-lcs (1.5.0)
80
- erubi (1.12.0)
81
- globalid (1.2.1)
82
- activesupport (>= 6.1)
83
- i18n (1.14.1)
84
- concurrent-ruby (~> 1.0)
85
- json (2.7.2)
86
- language_server-protocol (3.17.0.3)
87
- lint_roller (1.1.0)
88
- loofah (2.22.0)
89
- crass (~> 1.0.2)
90
- nokogiri (>= 1.12.0)
91
- mail (2.8.1)
92
- mini_mime (>= 0.1.1)
93
- net-imap
94
- net-pop
95
- net-smtp
96
- marcel (1.0.2)
97
- method_source (1.0.0)
98
- mini_mime (1.1.5)
99
- minitest (5.21.2)
100
- net-imap (0.4.9.1)
101
- date
102
- net-protocol
103
- net-pop (0.1.2)
104
- net-protocol
105
- net-protocol (0.2.2)
106
- timeout
107
- net-smtp (0.4.0.1)
108
- net-protocol
109
- nio4r (2.7.0)
110
- nokogiri (1.16.0-arm64-darwin)
111
- racc (~> 1.4)
112
- parallel (1.24.0)
113
- parser (3.3.1.0)
114
- ast (~> 2.4.1)
115
- racc
116
- psych (5.1.2)
117
- stringio
118
- racc (1.7.3)
119
- rack (2.2.8)
120
- rack-test (2.1.0)
121
- rack (>= 1.3)
122
- rails (6.1.7.6)
123
- actioncable (= 6.1.7.6)
124
- actionmailbox (= 6.1.7.6)
125
- actionmailer (= 6.1.7.6)
126
- actionpack (= 6.1.7.6)
127
- actiontext (= 6.1.7.6)
128
- actionview (= 6.1.7.6)
129
- activejob (= 6.1.7.6)
130
- activemodel (= 6.1.7.6)
131
- activerecord (= 6.1.7.6)
132
- activestorage (= 6.1.7.6)
133
- activesupport (= 6.1.7.6)
134
- bundler (>= 1.15.0)
135
- railties (= 6.1.7.6)
136
- sprockets-rails (>= 2.0.0)
137
- rails-dom-testing (2.2.0)
138
- activesupport (>= 5.0.0)
139
- minitest
140
- nokogiri (>= 1.6)
141
- rails-html-sanitizer (1.6.0)
142
- loofah (~> 2.21)
143
- nokogiri (~> 1.14)
144
- railties (6.1.7.6)
145
- actionpack (= 6.1.7.6)
146
- activesupport (= 6.1.7.6)
147
- method_source
148
- rake (>= 12.2)
149
- thor (~> 1.0)
150
- rainbow (3.1.1)
151
- rake (13.1.0)
152
- rdoc (6.6.2)
153
- psych (>= 4.0.0)
154
- regexp_parser (2.9.0)
155
- rexml (3.2.6)
156
- rspec (3.12.0)
157
- rspec-core (~> 3.12.0)
158
- rspec-expectations (~> 3.12.0)
159
- rspec-mocks (~> 3.12.0)
160
- rspec-core (3.12.2)
161
- rspec-support (~> 3.12.0)
162
- rspec-expectations (3.12.3)
163
- diff-lcs (>= 1.2.0, < 2.0)
164
- rspec-support (~> 3.12.0)
165
- rspec-mocks (3.12.6)
166
- diff-lcs (>= 1.2.0, < 2.0)
167
- rspec-support (~> 3.12.0)
168
- rspec-support (3.12.1)
169
- rubocop (1.62.1)
170
- json (~> 2.3)
171
- language_server-protocol (>= 3.17.0)
172
- parallel (~> 1.10)
173
- parser (>= 3.3.0.2)
174
- rainbow (>= 2.2.2, < 4.0)
175
- regexp_parser (>= 1.8, < 3.0)
176
- rexml (>= 3.2.5, < 4.0)
177
- rubocop-ast (>= 1.31.1, < 2.0)
178
- ruby-progressbar (~> 1.7)
179
- unicode-display_width (>= 2.4.0, < 3.0)
180
- rubocop-ast (1.31.2)
181
- parser (>= 3.3.0.4)
182
- rubocop-performance (1.20.2)
183
- rubocop (>= 1.48.1, < 2.0)
184
- rubocop-ast (>= 1.30.0, < 2.0)
185
- ruby-progressbar (1.13.0)
186
- sprockets (4.2.1)
187
- concurrent-ruby (~> 1.0)
188
- rack (>= 2.2.4, < 4)
189
- sprockets-rails (3.4.2)
190
- actionpack (>= 5.2)
191
- activesupport (>= 5.2)
192
- sprockets (>= 3.0.0)
193
- sqlite3 (1.7.1-arm64-darwin)
194
- standard (1.35.1)
195
- language_server-protocol (~> 3.17.0.2)
196
- lint_roller (~> 1.0)
197
- rubocop (~> 1.62.0)
198
- standard-custom (~> 1.0.0)
199
- standard-performance (~> 1.3)
200
- standard-custom (1.0.2)
201
- lint_roller (~> 1.0)
202
- rubocop (~> 1.50)
203
- standard-performance (1.3.1)
204
- lint_roller (~> 1.1)
205
- rubocop-performance (~> 1.20.2)
206
- stringio (3.1.0)
207
- thor (1.3.0)
208
- timeout (0.4.1)
209
- tzinfo (2.0.6)
210
- concurrent-ruby (~> 1.0)
211
- unicode-display_width (2.5.0)
212
- websocket-driver (0.7.6)
213
- websocket-extensions (>= 0.1.0)
214
- websocket-extensions (0.1.5)
215
- zeitwerk (2.6.12)
216
-
217
- PLATFORMS
218
- arm64-darwin-23
219
-
220
- DEPENDENCIES
221
- active_recall!
222
- appraisal
223
- rails (~> 6.0)
224
- rake (>= 12.0)
225
- rdoc
226
- rspec (>= 3.0)
227
- sqlite3
228
- standard
229
-
230
- BUNDLED WITH
231
- 2.4.14
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 6.1"
6
-
7
- gemspec path: "../"
@@ -1,231 +0,0 @@
1
- PATH
2
- remote: ..
3
- specs:
4
- active_recall (2.0.2)
5
- activerecord (>= 6.0, <= 7.2)
6
- activesupport (>= 6.0, <= 7.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actioncable (6.1.7.6)
12
- actionpack (= 6.1.7.6)
13
- activesupport (= 6.1.7.6)
14
- nio4r (~> 2.0)
15
- websocket-driver (>= 0.6.1)
16
- actionmailbox (6.1.7.6)
17
- actionpack (= 6.1.7.6)
18
- activejob (= 6.1.7.6)
19
- activerecord (= 6.1.7.6)
20
- activestorage (= 6.1.7.6)
21
- activesupport (= 6.1.7.6)
22
- mail (>= 2.7.1)
23
- actionmailer (6.1.7.6)
24
- actionpack (= 6.1.7.6)
25
- actionview (= 6.1.7.6)
26
- activejob (= 6.1.7.6)
27
- activesupport (= 6.1.7.6)
28
- mail (~> 2.5, >= 2.5.4)
29
- rails-dom-testing (~> 2.0)
30
- actionpack (6.1.7.6)
31
- actionview (= 6.1.7.6)
32
- activesupport (= 6.1.7.6)
33
- rack (~> 2.0, >= 2.0.9)
34
- rack-test (>= 0.6.3)
35
- rails-dom-testing (~> 2.0)
36
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
37
- actiontext (6.1.7.6)
38
- actionpack (= 6.1.7.6)
39
- activerecord (= 6.1.7.6)
40
- activestorage (= 6.1.7.6)
41
- activesupport (= 6.1.7.6)
42
- nokogiri (>= 1.8.5)
43
- actionview (6.1.7.6)
44
- activesupport (= 6.1.7.6)
45
- builder (~> 3.1)
46
- erubi (~> 1.4)
47
- rails-dom-testing (~> 2.0)
48
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
49
- activejob (6.1.7.6)
50
- activesupport (= 6.1.7.6)
51
- globalid (>= 0.3.6)
52
- activemodel (6.1.7.6)
53
- activesupport (= 6.1.7.6)
54
- activerecord (6.1.7.6)
55
- activemodel (= 6.1.7.6)
56
- activesupport (= 6.1.7.6)
57
- activestorage (6.1.7.6)
58
- actionpack (= 6.1.7.6)
59
- activejob (= 6.1.7.6)
60
- activerecord (= 6.1.7.6)
61
- activesupport (= 6.1.7.6)
62
- marcel (~> 1.0)
63
- mini_mime (>= 1.1.0)
64
- activesupport (6.1.7.6)
65
- concurrent-ruby (~> 1.0, >= 1.0.2)
66
- i18n (>= 1.6, < 2)
67
- minitest (>= 5.1)
68
- tzinfo (~> 2.0)
69
- zeitwerk (~> 2.3)
70
- appraisal (2.5.0)
71
- bundler
72
- rake
73
- thor (>= 0.14.0)
74
- ast (2.4.2)
75
- builder (3.2.4)
76
- concurrent-ruby (1.2.3)
77
- crass (1.0.6)
78
- date (3.3.4)
79
- diff-lcs (1.5.0)
80
- erubi (1.12.0)
81
- globalid (1.2.1)
82
- activesupport (>= 6.1)
83
- i18n (1.14.1)
84
- concurrent-ruby (~> 1.0)
85
- json (2.7.2)
86
- language_server-protocol (3.17.0.3)
87
- lint_roller (1.1.0)
88
- loofah (2.22.0)
89
- crass (~> 1.0.2)
90
- nokogiri (>= 1.12.0)
91
- mail (2.8.1)
92
- mini_mime (>= 0.1.1)
93
- net-imap
94
- net-pop
95
- net-smtp
96
- marcel (1.0.2)
97
- method_source (1.0.0)
98
- mini_mime (1.1.5)
99
- minitest (5.21.2)
100
- net-imap (0.4.9.1)
101
- date
102
- net-protocol
103
- net-pop (0.1.2)
104
- net-protocol
105
- net-protocol (0.2.2)
106
- timeout
107
- net-smtp (0.4.0.1)
108
- net-protocol
109
- nio4r (2.7.0)
110
- nokogiri (1.16.0-arm64-darwin)
111
- racc (~> 1.4)
112
- parallel (1.24.0)
113
- parser (3.3.1.0)
114
- ast (~> 2.4.1)
115
- racc
116
- psych (5.1.2)
117
- stringio
118
- racc (1.7.3)
119
- rack (2.2.8)
120
- rack-test (2.1.0)
121
- rack (>= 1.3)
122
- rails (6.1.7.6)
123
- actioncable (= 6.1.7.6)
124
- actionmailbox (= 6.1.7.6)
125
- actionmailer (= 6.1.7.6)
126
- actionpack (= 6.1.7.6)
127
- actiontext (= 6.1.7.6)
128
- actionview (= 6.1.7.6)
129
- activejob (= 6.1.7.6)
130
- activemodel (= 6.1.7.6)
131
- activerecord (= 6.1.7.6)
132
- activestorage (= 6.1.7.6)
133
- activesupport (= 6.1.7.6)
134
- bundler (>= 1.15.0)
135
- railties (= 6.1.7.6)
136
- sprockets-rails (>= 2.0.0)
137
- rails-dom-testing (2.2.0)
138
- activesupport (>= 5.0.0)
139
- minitest
140
- nokogiri (>= 1.6)
141
- rails-html-sanitizer (1.6.0)
142
- loofah (~> 2.21)
143
- nokogiri (~> 1.14)
144
- railties (6.1.7.6)
145
- actionpack (= 6.1.7.6)
146
- activesupport (= 6.1.7.6)
147
- method_source
148
- rake (>= 12.2)
149
- thor (~> 1.0)
150
- rainbow (3.1.1)
151
- rake (13.1.0)
152
- rdoc (6.6.2)
153
- psych (>= 4.0.0)
154
- regexp_parser (2.9.0)
155
- rexml (3.2.6)
156
- rspec (3.12.0)
157
- rspec-core (~> 3.12.0)
158
- rspec-expectations (~> 3.12.0)
159
- rspec-mocks (~> 3.12.0)
160
- rspec-core (3.12.2)
161
- rspec-support (~> 3.12.0)
162
- rspec-expectations (3.12.3)
163
- diff-lcs (>= 1.2.0, < 2.0)
164
- rspec-support (~> 3.12.0)
165
- rspec-mocks (3.12.6)
166
- diff-lcs (>= 1.2.0, < 2.0)
167
- rspec-support (~> 3.12.0)
168
- rspec-support (3.12.1)
169
- rubocop (1.62.1)
170
- json (~> 2.3)
171
- language_server-protocol (>= 3.17.0)
172
- parallel (~> 1.10)
173
- parser (>= 3.3.0.2)
174
- rainbow (>= 2.2.2, < 4.0)
175
- regexp_parser (>= 1.8, < 3.0)
176
- rexml (>= 3.2.5, < 4.0)
177
- rubocop-ast (>= 1.31.1, < 2.0)
178
- ruby-progressbar (~> 1.7)
179
- unicode-display_width (>= 2.4.0, < 3.0)
180
- rubocop-ast (1.31.2)
181
- parser (>= 3.3.0.4)
182
- rubocop-performance (1.20.2)
183
- rubocop (>= 1.48.1, < 2.0)
184
- rubocop-ast (>= 1.30.0, < 2.0)
185
- ruby-progressbar (1.13.0)
186
- sprockets (4.2.1)
187
- concurrent-ruby (~> 1.0)
188
- rack (>= 2.2.4, < 4)
189
- sprockets-rails (3.4.2)
190
- actionpack (>= 5.2)
191
- activesupport (>= 5.2)
192
- sprockets (>= 3.0.0)
193
- sqlite3 (1.7.1-arm64-darwin)
194
- standard (1.35.1)
195
- language_server-protocol (~> 3.17.0.2)
196
- lint_roller (~> 1.0)
197
- rubocop (~> 1.62.0)
198
- standard-custom (~> 1.0.0)
199
- standard-performance (~> 1.3)
200
- standard-custom (1.0.2)
201
- lint_roller (~> 1.0)
202
- rubocop (~> 1.50)
203
- standard-performance (1.3.1)
204
- lint_roller (~> 1.1)
205
- rubocop-performance (~> 1.20.2)
206
- stringio (3.1.0)
207
- thor (1.3.0)
208
- timeout (0.4.1)
209
- tzinfo (2.0.6)
210
- concurrent-ruby (~> 1.0)
211
- unicode-display_width (2.5.0)
212
- websocket-driver (0.7.6)
213
- websocket-extensions (>= 0.1.0)
214
- websocket-extensions (0.1.5)
215
- zeitwerk (2.6.12)
216
-
217
- PLATFORMS
218
- arm64-darwin-23
219
-
220
- DEPENDENCIES
221
- active_recall!
222
- appraisal
223
- rails (~> 6.1)
224
- rake (>= 12.0)
225
- rdoc
226
- rspec (>= 3.0)
227
- sqlite3
228
- standard
229
-
230
- BUNDLED WITH
231
- 2.4.14