active_recall 1.2.1 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9fd2908666f48d08173c20837e851db9ebd7a7a8b10d2f565deb16d84b013d60
4
- data.tar.gz: e5028ad1e24d606adbd87aa0b568b9325f9a1cf33c68969a1b3ec188934ae15e
3
+ metadata.gz: 1784eaa3c18a644a3b7b16935626de436851355d6ec1f0ac19367ef2d789a873
4
+ data.tar.gz: '08e4a478783a55852dbefa1d0f6703ab2e44b4c02cd493e7091ff8cd715f4f43'
5
5
  SHA512:
6
- metadata.gz: 2bba9aa5339b214a51255a04d0c63c2d518f130f376166c742a7c0267923c778279b760dd0292cb80157d0fad3f7ade2155f52cef2403f79f53c418681ac273c
7
- data.tar.gz: '09d5aa80737619a70d387527bf214ad39dcaaf1def5c5c28b3db4384fee1be5f855454137463dbdb19aabbdfab63b785ec3ce20daf82bceed647221b0105b719'
6
+ metadata.gz: d80c727f175317bb7173721981dba6eaea93e8e6a13793e3fc38ffebf0215b998c58904b936c6fb9cbd9784a3a6641ce35016402e6b85ef335f8df3c8bf622a5
7
+ data.tar.gz: e645b4e3cd9ee513885f3a766d7d0566efa12bae1be14e0c3593c130bc6a10083544ffdb1e71a22e9a0cd313f1415811aa9fec3c734c9839c677a367f21e91be
@@ -0,0 +1,46 @@
1
+ name: Tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - master
7
+ push:
8
+ branches:
9
+ - master
10
+
11
+ jobs:
12
+ unit_tests:
13
+ name: Unit Tests
14
+ if: "contains(github.event.commits[0].message, '[ci skip]') == false"
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ os:
19
+ - macos
20
+ - ubuntu
21
+ ruby:
22
+ - 2.5
23
+ - 2.6
24
+ - 2.7
25
+ - 3.0
26
+ allow_failures:
27
+ - false
28
+ include:
29
+ - os: ubuntu
30
+ ruby: ruby-head
31
+ allow_failures: false
32
+ env:
33
+ BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
34
+ ALLOW_FAILURES: "${{ matrix.allow_failures }}"
35
+ runs-on: ${{ matrix.os }}-latest
36
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
37
+ steps:
38
+ - name: Checkout
39
+ uses: actions/checkout@v2
40
+ - name: Setup Ruby
41
+ uses: ruby/setup-ruby@v1
42
+ with:
43
+ ruby-version: ${{ matrix.ruby }}
44
+ bundler-cache: true
45
+ - name: Test
46
+ run: bundle exec rake spec || $ALLOW_FAILURES
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.3
1
+ 3.0.0
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source 'https://rubygems.org'
4
- ruby '2.5.3'
5
4
 
6
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
7
6
 
data/Gemfile.lock CHANGED
@@ -1,30 +1,30 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_recall (1.2.1)
5
- activerecord (>= 5.2.3)
6
- activesupport (>= 5.2.3)
4
+ active_recall (1.6.0)
5
+ activerecord (>= 5.2.3, <= 6.1)
6
+ activesupport (>= 5.2.3, <= 6.1)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (6.0.0)
12
- activesupport (= 6.0.0)
13
- activerecord (6.0.0)
14
- activemodel (= 6.0.0)
15
- activesupport (= 6.0.0)
16
- activesupport (6.0.0)
11
+ activemodel (6.1.0)
12
+ activesupport (= 6.1.0)
13
+ activerecord (6.1.0)
14
+ activemodel (= 6.1.0)
15
+ activesupport (= 6.1.0)
16
+ activesupport (6.1.0)
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 0.7, < 2)
19
- minitest (~> 5.1)
20
- tzinfo (~> 1.1)
21
- zeitwerk (~> 2.1, >= 2.1.8)
22
- concurrent-ruby (1.1.5)
18
+ i18n (>= 1.6, < 2)
19
+ minitest (>= 5.1)
20
+ tzinfo (~> 2.0)
21
+ zeitwerk (~> 2.3)
22
+ concurrent-ruby (1.1.8)
23
23
  diff-lcs (1.3)
24
- i18n (1.7.0)
24
+ i18n (1.8.9)
25
25
  concurrent-ruby (~> 1.0)
26
- minitest (5.12.2)
27
- rake (10.5.0)
26
+ minitest (5.14.4)
27
+ rake (12.3.3)
28
28
  rdoc (6.2.0)
29
29
  rspec (3.8.0)
30
30
  rspec-core (~> 3.8.0)
@@ -39,25 +39,20 @@ GEM
39
39
  diff-lcs (>= 1.2.0, < 2.0)
40
40
  rspec-support (~> 3.8.0)
41
41
  rspec-support (3.8.2)
42
- sqlite3 (1.4.1)
43
- thread_safe (0.3.6)
44
- tzinfo (1.2.5)
45
- thread_safe (~> 0.1)
46
- zeitwerk (2.2.0)
42
+ sqlite3 (1.4.2)
43
+ tzinfo (2.0.4)
44
+ concurrent-ruby (~> 1.0)
45
+ zeitwerk (2.4.2)
47
46
 
48
47
  PLATFORMS
49
48
  ruby
50
49
 
51
50
  DEPENDENCIES
52
51
  active_recall!
53
- bundler (>= 1.16)
54
- rake (~> 10.0)
52
+ rake (~> 12.0)
55
53
  rdoc
56
54
  rspec (~> 3.0)
57
55
  sqlite3
58
56
 
59
- RUBY VERSION
60
- ruby 2.5.3p105
61
-
62
57
  BUNDLED WITH
63
- 1.17.3
58
+ 2.2.3
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # ActiveRecall [![Build Status](https://travis-ci.org/jaysonvirissimo/active_recall.svg?branch=master)](https://travis-ci.org/jaysonvirissimo/active_recall)
1
+ # ActiveRecall
2
2
 
3
3
  **ActiveRecall** is a spaced-repetition system that allows you to treat arbitrary [ActiveRecord](https://github.com/rails/rails/tree/master/activerecord) models as if they were flashcards to be learned and reviewed.
4
4
  It it based on, and is intended to be backwards compatible with, the [okubo](https://github.com/rgravina/okubo) gem.
5
- The primary differentiating features are that it lets the user specify the scheduling algorithm and is fully compatible with Rails 6.
5
+ The primary differentiating features are that it lets the user specify the scheduling algorithm and is fully compatible with Rails 6.0 and Ruby 3.0.
6
6
 
7
7
  ## Installation
8
8
 
@@ -32,11 +32,10 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ['lib']
34
34
 
35
- spec.add_development_dependency 'bundler', '>= 1.16'
36
- spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'rake', '~> 12.0'
37
36
  spec.add_development_dependency 'rdoc'
38
37
  spec.add_development_dependency 'rspec', '~> 3.0'
39
38
  spec.add_development_dependency 'sqlite3'
40
- spec.add_runtime_dependency 'activerecord', '>= 5.2.3'
41
- spec.add_runtime_dependency 'activesupport', '>= 5.2.3'
39
+ spec.add_runtime_dependency 'activerecord', '>= 5.2.3', '<= 6.1'
40
+ spec.add_runtime_dependency 'activesupport', '>= 5.2.3', '<= 6.1'
42
41
  end
data/lib/active_recall.rb CHANGED
@@ -10,7 +10,7 @@ require 'active_recall/models/deck'
10
10
  require 'active_recall/models/item'
11
11
  require 'active_recall/version'
12
12
 
13
- ActiveRecord::Base.send(:include, ActiveRecall::Base)
13
+ ActiveRecord::Base.include ActiveRecall::Base
14
14
 
15
15
  module ActiveRecall
16
16
  class << self
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ActiveRecall
4
4
  class FibonacciSequence
5
- def self.right(box:, current_time: Time.current, times_right:, times_wrong:)
5
+ def self.right(box:, times_right:, times_wrong:, current_time: Time.current)
6
6
  new(
7
7
  box: box,
8
8
  current_time: current_time,
@@ -11,7 +11,7 @@ module ActiveRecall
11
11
  ).right
12
12
  end
13
13
 
14
- def self.wrong(box:, current_time: Time.current, times_right:, times_wrong:)
14
+ def self.wrong(box:, times_right:, times_wrong:, current_time: Time.current)
15
15
  new(
16
16
  box: box,
17
17
  current_time: current_time,
@@ -20,7 +20,7 @@ module ActiveRecall
20
20
  ).wrong
21
21
  end
22
22
 
23
- def initialize(box:, current_time: Time.current, times_right:, times_wrong:)
23
+ def initialize(box:, times_right:, times_wrong:, current_time: Time.current)
24
24
  @box = box
25
25
  @current_time = current_time
26
26
  @times_right = times_right
@@ -4,7 +4,7 @@ module ActiveRecall
4
4
  class LeitnerSystem
5
5
  DELAYS = [3, 7, 14, 30, 60, 120, 240].freeze
6
6
 
7
- def self.right(box:, current_time: Time.current, times_right:, times_wrong:)
7
+ def self.right(box:, times_right:, times_wrong:, current_time: Time.current)
8
8
  new(
9
9
  box: box,
10
10
  current_time: current_time,
@@ -13,7 +13,7 @@ module ActiveRecall
13
13
  ).right
14
14
  end
15
15
 
16
- def self.wrong(box:, current_time: Time.current, times_right:, times_wrong:)
16
+ def self.wrong(box:, times_right:, times_wrong:, current_time: Time.current)
17
17
  new(
18
18
  box: box,
19
19
  current_time: current_time,
@@ -22,7 +22,7 @@ module ActiveRecall
22
22
  ).wrong
23
23
  end
24
24
 
25
- def initialize(box:, current_time: Time.current, times_right:, times_wrong:)
25
+ def initialize(box:, times_right:, times_wrong:, current_time: Time.current)
26
26
  @box = box
27
27
  @current_time = current_time
28
28
  @times_right = times_right
@@ -3,10 +3,10 @@
3
3
  module ActiveRecall
4
4
  module DeckMethods
5
5
  def deck
6
- d = ActiveRecall::Deck.where(user_id: id, user_type: self.class.name).first_or_create
6
+ d = ActiveRecall::Deck.find_or_create_by(user_id: id, user_type: self.class.name)
7
7
  d.source_class.module_eval do
8
8
  def stats
9
- ActiveRecall::Item.where(source_id: id, source_type: self.class.name).first
9
+ ActiveRecall::Item.find_by(source_id: id, source_type: self.class.name)
10
10
  end
11
11
  end
12
12
  d
@@ -3,13 +3,13 @@
3
3
  module ActiveRecall
4
4
  module ItemMethods
5
5
  def right_answer_for!(item)
6
- i = deck.items.where(source_id: item.id).first
6
+ i = deck.items.find_by(source_id: item.id)
7
7
  i.right!
8
8
  i.save!
9
9
  end
10
10
 
11
11
  def wrong_answer_for!(item)
12
- i = deck.items.where(source_id: item.id).first
12
+ i = deck.items.find_by(source_id: item.id)
13
13
  i.wrong!
14
14
  i.save!
15
15
  end
@@ -37,8 +37,9 @@ module ActiveRecall
37
37
  end
38
38
 
39
39
  def delete(source)
40
- item = ActiveRecall::Item.new(deck: self, source_id: source.id, source_type: source.class.name)
41
- item.destroy
40
+ ActiveRecall::Item
41
+ .find_by(deck: self, source_id: source.id, source_type: source.class.name)
42
+ .destroy
42
43
  end
43
44
 
44
45
  def review
@@ -5,7 +5,6 @@ module ActiveRecall
5
5
  self.table_name = 'active_recall_items'
6
6
 
7
7
  belongs_to :deck
8
- belongs_to :source, polymorphic: true
9
8
 
10
9
  scope :failed, -> { where(['box = ? and last_reviewed is not null', 0]) }
11
10
  scope :untested, -> { where(['box = ? and last_reviewed is null', 0]) }
@@ -18,12 +17,16 @@ module ActiveRecall
18
17
  where(['box > ? and next_review > ?', 0, current_time])
19
18
  end
20
19
 
20
+ def source
21
+ source_type.constantize.find(source_id)
22
+ end
23
+
21
24
  def right!
22
- update!(algorithm_class.right(scoring_attributes))
25
+ update!(algorithm_class.right(**scoring_attributes))
23
26
  end
24
27
 
25
28
  def wrong!
26
- update!(algorithm_class.wrong(scoring_attributes))
29
+ update!(algorithm_class.wrong(**scoring_attributes))
27
30
  end
28
31
 
29
32
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecall
4
- VERSION = '1.2.1'
4
+ VERSION = '1.6.0'
5
5
  end
@@ -20,9 +20,7 @@ class ActiveRecallGenerator < Rails::Generators::Base
20
20
  def create_migration_files
21
21
  create_migration_file_if_not_exist 'create_active_recall_tables'
22
22
  create_migration_file_if_not_exist 'add_active_recall_item_answer_counts'
23
- if options['migrate_data']
24
- create_migration_file_if_not_exist 'migrate_okubo_to_active_recall'
25
- end
23
+ create_migration_file_if_not_exist 'migrate_okubo_to_active_recall' if options['migrate_data']
26
24
  end
27
25
 
28
26
  private
metadata CHANGED
@@ -1,44 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_recall
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Gravina
8
8
  - Jayson Virissimo
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-12-16 00:00:00.000000000 Z
12
+ date: 2021-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '1.16'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '1.16'
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: rake
30
16
  requirement: !ruby/object:Gem::Requirement
31
17
  requirements:
32
18
  - - "~>"
33
19
  - !ruby/object:Gem::Version
34
- version: '10.0'
20
+ version: '12.0'
35
21
  type: :development
36
22
  prerelease: false
37
23
  version_requirements: !ruby/object:Gem::Requirement
38
24
  requirements:
39
25
  - - "~>"
40
26
  - !ruby/object:Gem::Version
41
- version: '10.0'
27
+ version: '12.0'
42
28
  - !ruby/object:Gem::Dependency
43
29
  name: rdoc
44
30
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +74,9 @@ dependencies:
88
74
  - - ">="
89
75
  - !ruby/object:Gem::Version
90
76
  version: 5.2.3
77
+ - - "<="
78
+ - !ruby/object:Gem::Version
79
+ version: '6.1'
91
80
  type: :runtime
92
81
  prerelease: false
93
82
  version_requirements: !ruby/object:Gem::Requirement
@@ -95,6 +84,9 @@ dependencies:
95
84
  - - ">="
96
85
  - !ruby/object:Gem::Version
97
86
  version: 5.2.3
87
+ - - "<="
88
+ - !ruby/object:Gem::Version
89
+ version: '6.1'
98
90
  - !ruby/object:Gem::Dependency
99
91
  name: activesupport
100
92
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +94,9 @@ dependencies:
102
94
  - - ">="
103
95
  - !ruby/object:Gem::Version
104
96
  version: 5.2.3
97
+ - - "<="
98
+ - !ruby/object:Gem::Version
99
+ version: '6.1'
105
100
  type: :runtime
106
101
  prerelease: false
107
102
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,6 +104,9 @@ dependencies:
109
104
  - - ">="
110
105
  - !ruby/object:Gem::Version
111
106
  version: 5.2.3
107
+ - - "<="
108
+ - !ruby/object:Gem::Version
109
+ version: '6.1'
112
110
  description: A spaced-repetition system to be used with ActiveRecord models
113
111
  email:
114
112
  - robert.gravina@gmail.com
@@ -117,10 +115,10 @@ executables: []
117
115
  extensions: []
118
116
  extra_rdoc_files: []
119
117
  files:
118
+ - ".github/workflows/tests.yml"
120
119
  - ".gitignore"
121
120
  - ".rspec"
122
121
  - ".ruby-version"
123
- - ".travis.yml"
124
122
  - Gemfile
125
123
  - Gemfile.lock
126
124
  - LICENSE
@@ -148,7 +146,7 @@ licenses:
148
146
  - MIT
149
147
  metadata:
150
148
  allowed_push_host: https://rubygems.org/
151
- post_install_message:
149
+ post_install_message:
152
150
  rdoc_options: []
153
151
  require_paths:
154
152
  - lib
@@ -163,9 +161,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
161
  - !ruby/object:Gem::Version
164
162
  version: '0'
165
163
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.7.6
168
- signing_key:
164
+ rubygems_version: 3.2.3
165
+ signing_key:
169
166
  specification_version: 4
170
167
  summary: A spaced-repetition system
171
168
  test_files: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - 2.5.3
5
- before_install: gem install bundler -v 1.17.3