active_recall 1.2.0 → 1.5.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: 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