acts_as_learnable 0.1.0 → 0.2.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
- SHA1:
3
- metadata.gz: 24b49c5a5beec988626f52390586b33b40b40ec6
4
- data.tar.gz: 38e31cd2da1105c780ae3aee8f081ebf3aba2d33
2
+ SHA256:
3
+ metadata.gz: 6e65eaf9f25b641df9f9377c40997cadfeec15a64d28686c84ae1c1cb37d44e8
4
+ data.tar.gz: 5b76d804d68b1e557580b044cd56e93866aa5720544c5867b68be9ded5fd9a45
5
5
  SHA512:
6
- metadata.gz: 8e7ff740e320e942b5a03a07cf2bd6da9a9dbf885fc964bb12d89fa30d5e6ec7a0a9af7316c617e5cd651dd2b728de6d72f4493656796504f734bc169e9ce9ac
7
- data.tar.gz: ce389b6a20c055613ee143946eaab9f04bcf3cad8ade54ec61bad56f45abcab60324c6bea3f2216ada1ab3af30d334c8ef94f7d9c763141373ec6ba4e0f7c3ce
6
+ metadata.gz: fd561ac48b1c65675addbda453947414e7d063a2d1defc67fbf096658626334576dc36cdb0b125d8ce3b282eb2c918c98649bb260496d07d419c7a418bfe0db1
7
+ data.tar.gz: 8548a28b5433b4a7a7f0c1bac89377026a9cdcc94b43747ce631e01463fb04062c002f491100d3f58f9b89c37a4bb649a4baaec5ad5b9e5ffed39cc30dcffeeb
data/README.md CHANGED
@@ -35,9 +35,7 @@ end
35
35
 
36
36
  It will automatically extend your class with all necessary methods.
37
37
 
38
- Make sure you have the following fields on the model (generators will be added later):
39
-
40
- Then you can review items:
38
+ Then you can review flashcards:
41
39
 
42
40
  ```ruby
43
41
  card = Flashcard.create
@@ -51,13 +49,8 @@ card.repetitions # => 1
51
49
 
52
50
  ## Contributing
53
51
 
54
- 1. Fork it ( https://github.com/itsdan/acts_as_learnable/fork )
52
+ 1. Fork it ( https://github.com/dankimio/acts_as_learnable/fork )
55
53
  2. Create your feature branch (`git checkout -b my-new-feature`)
56
54
  3. Commit your changes (`git commit -am 'Add some feature'`)
57
55
  4. Push to the branch (`git push origin my-new-feature`)
58
56
  5. Create a new Pull Request
59
-
60
- ## TODO
61
-
62
- * More detailed README
63
- * Other repetition algorithms (Anki)
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ require 'bundler/gem_tasks'
1
2
  require 'rake/testtask'
2
3
 
3
4
  Rake::TestTask.new do |t|
@@ -6,23 +6,23 @@ require 'acts_as_learnable/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'acts_as_learnable'
8
8
  spec.version = ActsAsLearnable::VERSION
9
- spec.authors = ['Danya Kim']
10
- spec.email = ["itsdanya@gmail.com"]
9
+ spec.authors = ['Dan Kim']
10
+ spec.email = ['itsdanya@gmail.com']
11
11
  spec.summary = 'A simple way to create flashcards in your app.'
12
12
  spec.description = 'ActsAsLearnable is a Ruby gem for ActiveRecord models. It provides a simple way to create flashcards in your app. It automatically schedules flashcards for review depending on recall quality (1 to 5). You can easily create a Spaced Repetition System (SRS) using this gem.'
13
- spec.homepage = 'http://github.com/itsdan/acts_as_learnable'
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/itsdn/acts_as_learnable'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activerecord', '~> 4.0'
22
- spec.add_dependency 'activesupport', '~> 4.0'
21
+ spec.add_dependency 'activerecord', '>= 5.2'
22
+ spec.add_dependency 'activesupport', '>= 5.2'
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 1.7'
25
- spec.add_development_dependency 'rake', '~> 10.0'
26
- spec.add_development_dependency 'sqlite3', '~> 1.3'
27
- spec.add_development_dependency 'byebug', '~> 4.0'
24
+ spec.add_development_dependency 'bundler'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'sqlite3'
27
+ spec.add_development_dependency 'byebug'
28
28
  end
@@ -15,7 +15,7 @@ module ActsAsLearnable
15
15
 
16
16
  module InstanceMethods
17
17
  def review(recall_quality)
18
- fail unless (1..5).include?(recall_quality)
18
+ raise unless (1..5).include?(recall_quality)
19
19
 
20
20
  # If the quality of response was lower than 3, then start repetitions from the beginning
21
21
  reset and return if recall_quality <= 2
@@ -65,13 +65,12 @@ module ActsAsLearnable
65
65
 
66
66
  # Update interval according to the formula
67
67
  def update_interval
68
- # TODO: Extract magic numbers
69
68
  self.interval =
70
69
  case repetitions
71
70
  when 1 then 1
72
71
  when 2 then 6
73
72
  else
74
- interval(repetitions - 1) * easiness_factor
73
+ (repetitions - 1) * easiness_factor
75
74
  end
76
75
  end
77
76
 
@@ -1,3 +1,3 @@
1
1
  module ActsAsLearnable
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -1,10 +1,7 @@
1
1
  require 'active_record'
2
2
  require 'acts_as_learnable/base'
3
- require 'byebug'
4
3
 
5
4
  module ActsAsLearnable
6
5
  # Extend ActiveRecord if defined
7
- if defined?(ActiveRecord::Base)
8
- ActiveRecord::Base.extend(ActsAsLearnable::Base)
9
- end
6
+ ActiveRecord::Base.extend(ActsAsLearnable::Base) if defined?(ActiveRecord::Base)
10
7
  end
@@ -6,16 +6,19 @@ class FlashcardGenerator < ActiveRecord::Generators::Base
6
6
 
7
7
  desc 'This generator creates a migration file with flashcard fields.'
8
8
 
9
- source_root File.expand_path('../templates', __FILE__)
9
+ source_root File.expand_path('templates', __dir__)
10
10
 
11
11
  def install_flashcards
12
- if File.exist?("#{destination_root}/db/schema.rb") &&
13
- File.read("#{destination_root}/db/schema.rb") =~ /create_table \"#{table_name}\"/
14
- migration_template(
15
- 'add_fields_migration.rb',
16
- "db/migrate/add_flashcard_fields_to_#{table_name}.rb")
12
+ if schema_exists? && File.read("#{destination_root}/db/schema.rb") =~ /create_table "#{table_name}"/
13
+ migration_template('add_fields_migration.rb', "db/migrate/add_flashcard_fields_to_#{table_name}.rb")
17
14
  else
18
15
  migration_template('create_table_migration.rb', "db/migrate/create_#{table_name}.rb")
19
16
  end
20
17
  end
18
+
19
+ private
20
+
21
+ def schema_exists?
22
+ File.exist?("#{destination_root}/db/schema.rb")
23
+ end
21
24
  end
@@ -1,17 +1,9 @@
1
1
  class <%= @migration_class_name %> < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  add_column :<%= table_name %>, :easiness_factor, :float, default: 2.5
4
- add_column :<%= table_name %>, :repetitions, :integer, default: 0
5
- add_column :<%= table_name %>, :interval, :integer, default: 0
6
- add_column :<%= table_name %>, :due, :date, default: nil
7
- add_column :<%= table_name %>, :studied_at, :date, default: nil
8
- end
9
-
10
- def self.down
11
- remove_column :<%= table_name %>, :easiness_factor
12
- remove_column :<%= table_name %>, :repetitions
13
- remove_column :<%= table_name %>, :interval
14
- remove_column :<%= table_name %>, :due
15
- remove_column :<%= table_name %>, :studied_at
4
+ add_column :<%= table_name %>, :repetitions, :integer, default: 0
5
+ add_column :<%= table_name %>, :interval, :integer, default: 0
6
+ add_column :<%= table_name %>, :due, :date, default: nil
7
+ add_column :<%= table_name %>, :studied_at, :date, default: nil
16
8
  end
17
9
  end
@@ -1,15 +1,11 @@
1
1
  class <%= @migration_class_name %> < ActiveRecord::Migration
2
- def self.up
3
- create_table '<%= table_name %>' do |t|
4
- t.column :easiness_factor, :float, default: 2.5
5
- t.column :repetitions, :integer, default: 0
6
- t.column :interval, :integer, default: 0
7
- t.column :due, :date, default: nil
8
- t.column :studied_at, :date, default: nil
2
+ def change
3
+ create_table :<%= table_name %> do |t|
4
+ t.column :easiness_factor, :float, default: 2.5
5
+ t.column :repetitions, :integer, default: 0
6
+ t.column :interval, :integer, default: 0
7
+ t.column :due, :date, default: nil
8
+ t.column :studied_at, :date, default: nil
9
9
  end
10
10
  end
11
-
12
- def self.down
13
- drop_table '<%= table_name %>'
14
- end
15
11
  end
data/test/test_helper.rb CHANGED
@@ -18,7 +18,7 @@ def setup_db
18
18
  end
19
19
 
20
20
  def teardown_db
21
- ActiveRecord::Base.connection.tables.each do |table|
21
+ ActiveRecord::Base.connection.data_sources.each do |table|
22
22
  ActiveRecord::Base.connection.drop_table(table)
23
23
  end
24
24
  end
metadata CHANGED
@@ -1,99 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_learnable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
- - Danya Kim
8
- autorequire:
7
+ - Dan Kim
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-31 00:00:00.000000000 Z
11
+ date: 2022-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '5.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '5.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.7'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.7'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '1.3'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '1.3'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '4.0'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '4.0'
96
+ version: '0'
97
97
  description: ActsAsLearnable is a Ruby gem for ActiveRecord models. It provides a
98
98
  simple way to create flashcards in your app. It automatically schedules flashcards
99
99
  for review depending on recall quality (1 to 5). You can easily create a Spaced
@@ -118,11 +118,11 @@ files:
118
118
  - lib/generators/flashcard/templates/create_table_migration.rb
119
119
  - test/test_base.rb
120
120
  - test/test_helper.rb
121
- homepage: http://github.com/itsdan/acts_as_learnable
121
+ homepage: https://github.com/itsdn/acts_as_learnable
122
122
  licenses:
123
123
  - MIT
124
124
  metadata: {}
125
- post_install_message:
125
+ post_install_message:
126
126
  rdoc_options: []
127
127
  require_paths:
128
128
  - lib
@@ -137,9 +137,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  requirements: []
140
- rubyforge_project:
141
- rubygems_version: 2.4.5
142
- signing_key:
140
+ rubygems_version: 3.3.7
141
+ signing_key:
143
142
  specification_version: 4
144
143
  summary: A simple way to create flashcards in your app.
145
144
  test_files: