active_recall 1.2.0 → 1.5.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: cd98a58a0b310c84f7fb225ea5d7ab8f6a15f3f784b47b57c0b423d2b7ec4001
4
- data.tar.gz: 94a4401f4adb97d724d0287d6edad73ae42a8a5e1073436132f90e3fb23bb4a8
3
+ metadata.gz: 37b52862b045e1e9c7a189acd1a611e84b5bd260ff1149472ed5b724530a0943
4
+ data.tar.gz: 7dbacf4db26d857144e91a68a4b4a5ea5c6012ec9579079d4b649c7fc7f8e388
5
5
  SHA512:
6
- metadata.gz: 2b7fb09f86a3513e82370c320833cf620ee9082371a27c2f404c913ff2717cc5f3fe0145acc8061a90623661266eb86d8cefcc37843081a3d998caba898c033d
7
- data.tar.gz: 19d5f46d9df7f38c859adac7c2eae9eb90359529b5890ac1bf5c6f9f99251636b96be5ee2dbcb847410601826554f94f140d270bc499088c99e1cb776b9f471c
6
+ metadata.gz: 10d110f43d6e845f1f3bc8269e7bf053a94ebb13bb1b9355d9915dd6e515b94492a7f4421d2e83978f24d45c471de4c881ea5d84f919f6eb9511cdec055dfacd
7
+ data.tar.gz: 0a3ef619b273e692bb1ef325971a3baa79562bc013ac3fc999eaa87ca4e4c2ff29607c3491f22d2ad419d79cd44f41cb1a5fb2ba41cba01357784f15e14ca3cc
@@ -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: true
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.0)
5
- activerecord (>= 5.2.3)
6
- activesupport (>= 5.2.3)
4
+ active_recall (1.5.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.3)
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
@@ -13,8 +13,9 @@ module ActiveRecall
13
13
  end
14
14
 
15
15
  def remove_deck
16
- deck = ActiveRecall::Deck.where(user_id: id, user_type: self.class.name).first
17
- deck.destroy
16
+ ActiveRecall::Deck
17
+ .where(user_id: id, user_type: self.class.name)
18
+ .destroy_all
18
19
  end
19
20
  end
20
21
  end
@@ -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
@@ -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.0'
4
+ VERSION = '1.5.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.0
4
+ version: 1.5.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-10-18 00:00:00.000000000 Z
12
+ date: 2021-02-19 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