streakable 0.2.0 → 0.3.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: f18abd101f35ccae5f18f0a696402bc7b5fec278212694c49073abef81ae455f
4
- data.tar.gz: 9ef4e70f39696b7456821489ca60ba41b34a3828d8420b55e055cd5a61259d04
3
+ metadata.gz: ffb7354200a8ad9ad4535155a73d7c8281417ee782b7c88aa8fa7157992aa29d
4
+ data.tar.gz: 25e92ef930699f4075be1d01ff7b8d5f9978e631e63ac2ee7c28226a65a5427e
5
5
  SHA512:
6
- metadata.gz: 26d0da96da351c7e7b58444affe0e6c5882fb3bc5ad4867f6a393201968b8cb92b6aea8b9d24f07894c4c536af2b3451e25df4fdb6a4d0854b891cb5383b3d1f
7
- data.tar.gz: 3caeeb38257f789b34204b84c5d76b6f237761aba3b81f4b527af614ef11e1f2e25fcf6266d22306e7df0ee290529fe839437582cd92ee5d5959ad396eac9070
6
+ metadata.gz: 160cd6a6578cc545019c9d267e607a94f6952ac6ae1e3c4a3a0c9f317f71ca177d9009408483bee17350d34aee626e574066514204799c8001c180d49ba53936
7
+ data.tar.gz: 3b357b82ed4840263bf99d7fb4598e3c59e5a318de06190001d03ec8ce208e76e3bec0d04ef8693d93297765d4cdc62a0d36ab36e8374ec8d990482e96b4cb27
data/.gitignore CHANGED
@@ -42,7 +42,7 @@ build-iPhoneSimulator/
42
42
 
43
43
  # for a library or gem, you might want to ignore these files since the code is
44
44
  # intended to run in multiple environments; otherwise, check them in:
45
- # Gemfile.lock
45
+ Gemfile.lock
46
46
  .ruby-version
47
47
  .ruby-gemset
48
48
 
@@ -13,16 +13,25 @@ gemfile:
13
13
  - gemfiles/rails3.gemfile
14
14
  - gemfiles/rails4.gemfile
15
15
  - gemfiles/rails5.gemfile
16
+ - gemfiles/rails6.gemfile
16
17
  matrix:
17
18
  exclude:
18
19
  - rvm: 2.1.0
19
20
  gemfile: gemfiles/rails5.gemfile
21
+ - rvm: 2.1.0
22
+ gemfile: gemfiles/rails6.gemfile
20
23
  - rvm: 2.2.0
21
24
  gemfile: gemfiles/rails5.gemfile
25
+ - rvm: 2.2.0
26
+ gemfile: gemfiles/rails6.gemfile
27
+ - rvm: 2.3.0
28
+ gemfile: gemfiles/rails6.gemfile
22
29
  - rvm: 2.4.0
23
30
  gemfile: gemfiles/rails3.gemfile
24
31
  - rvm: 2.4.0
25
32
  gemfile: gemfiles/rails4.gemfile
33
+ - rvm: 2.4.0
34
+ gemfile: gemfiles/rails6.gemfile
26
35
  - rvm: 2.5.0
27
36
  gemfile: gemfiles/rails3.gemfile
28
37
  - rvm: 2.5.0
data/Appraisals CHANGED
@@ -10,7 +10,6 @@ appraise "rails5" do
10
10
  gem "activerecord", "5.0.0"
11
11
  end
12
12
 
13
- # TODO: uncomment this once Rails 6 is released on April 30, 2019
14
- # appraise "rails6" do
15
- # gem "activerecord", "6.0.0"
16
- # end
13
+ appraise "rails6" do
14
+ gem "activerecord", "6.0.0"
15
+ end
@@ -0,0 +1,5 @@
1
+ * Fix N+1 queries by calculating streaks based on in-memory AR objects rather than fetching from database.
2
+
3
+ * Fix time zone support along the boundary conditions of midnight.
4
+
5
+ * Add Rails 6 support.
data/Gemfile CHANGED
@@ -2,3 +2,19 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in streakable.gemspec
4
4
  gemspec
5
+
6
+ # Hinting at development dependencies
7
+ # Prevents bundler from taking a long-time to resolve
8
+ group :development, :test do
9
+ gem 'appraisal'
10
+ gem 'bundler'
11
+ gem 'coveralls'
12
+ gem 'database_cleaner'
13
+ gem 'pry'
14
+ gem 'rake'
15
+ gem 'rspec'
16
+ gem 'sqlite3'
17
+ gem 'timecop'
18
+ gem 'activesupport'
19
+ gem 'pry-coolline'
20
+ end
data/README.md CHANGED
@@ -74,6 +74,17 @@ To get all of the streaks, not just the current one:
74
74
  user.streaks(:posts)
75
75
  ```
76
76
 
77
+ ## TODO
78
+
79
+ * Add class methods/scopes for calculating streaks on records not in memory
80
+
81
+ ## Specs
82
+ To run the specs for the currently running Ruby version, run `bundle install` and then `bundle exec rspec`. To run specs for every supported version of ActionPack, run `bundle exec appraisal install` and then `bundle exec appraisal rspec`.
83
+
84
+ ## Gem release
85
+ Make sure the specs pass, bump the version number in streakable.gemspec, build the gem with `gem build streakable.gemspec`. Commit your changes and push to Github, then tag the commit with the current release number using Github's Releases interface (use the format vx.x.x, where x is the semantic version number). You can pull the latest tags to your local repo with `git pull --tags`. Finally, push the gem with `gem push streakable-version-number-here.gem`.
86
+
87
+
77
88
  ## Contributing
78
89
 
79
90
  1. Fork it
@@ -4,4 +4,18 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "3.2.22"
6
6
 
7
+ group :development, :test do
8
+ gem "appraisal"
9
+ gem "bundler"
10
+ gem "coveralls"
11
+ gem "database_cleaner"
12
+ gem "pry"
13
+ gem "rake"
14
+ gem "rspec"
15
+ gem "sqlite3", '~> 1.3.6'
16
+ gem "timecop"
17
+ gem "activesupport"
18
+ gem "pry-coolline"
19
+ end
20
+
7
21
  gemspec path: "../"
@@ -4,4 +4,18 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "4.0.0"
6
6
 
7
+ group :development, :test do
8
+ gem "appraisal"
9
+ gem "bundler"
10
+ gem "coveralls"
11
+ gem "database_cleaner"
12
+ gem "pry"
13
+ gem "rake"
14
+ gem "rspec"
15
+ gem "sqlite3", '~> 1.3.6'
16
+ gem "timecop"
17
+ gem "activesupport"
18
+ gem "pry-coolline"
19
+ end
20
+
7
21
  gemspec path: "../"
@@ -4,4 +4,18 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "5.0.0"
6
6
 
7
+ group :development, :test do
8
+ gem "appraisal"
9
+ gem "bundler"
10
+ gem "coveralls"
11
+ gem "database_cleaner"
12
+ gem "pry"
13
+ gem "rake"
14
+ gem "rspec"
15
+ gem "sqlite3", '~> 1.3.6'
16
+ gem "timecop"
17
+ gem "activesupport"
18
+ gem "pry-coolline"
19
+ end
20
+
7
21
  gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "6.0.0"
6
+
7
+ group :development, :test do
8
+ gem "appraisal"
9
+ gem "bundler"
10
+ gem "coveralls"
11
+ gem "database_cleaner"
12
+ gem "pry"
13
+ gem "rake"
14
+ gem "rspec"
15
+ gem "sqlite3", '~> 1.4'
16
+ gem "timecop"
17
+ gem "activesupport"
18
+ gem "pry-coolline"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -38,15 +38,24 @@ class Streak
38
38
  # @param [Boolean] longest if true, calculate the longest day streak in the sequence,
39
39
  # not just the current one
40
40
  def length(longest: false)
41
+ # no streaks
41
42
  if streaks.empty?
42
43
  0
44
+
45
+ # calculate the longest one?
43
46
  elsif longest
44
47
  streaks.sort do |x, y|
45
48
  y.size <=> x.size
46
49
  end.first.size
50
+
51
+ # default streak calculation
47
52
  else
53
+ # pull the first streak
48
54
  streak = streaks.first
49
- if streak.include?(Date.current) || except_today && streak.include?(Date.yesterday)
55
+
56
+ # either the streak includes today,
57
+ # or we don't care about today and it includes yesterday
58
+ if streak.include?(Date.current) || except_today && streak.include?(Date.current - 1.day)
50
59
  streak.size
51
60
  else
52
61
  0
@@ -73,7 +82,7 @@ class Streak
73
82
 
74
83
  # consecutive day, the previous day was "tomorrow"
75
84
  # relative to day (since we're date descending)
76
- elsif days[i-1] == day.tomorrow
85
+ elsif days[i-1] == (day+1.day)
77
86
  # push to existing streak
78
87
  streak << day
79
88
 
@@ -93,16 +102,25 @@ class Streak
93
102
  streaks << streak
94
103
  end
95
104
  end
96
-
105
+
97
106
  streaks
98
107
  end
99
108
 
109
+ # TODO: add class methods/scopes to calculate streaks, days
110
+ # scrap code from old method below:
111
+ #
112
+ # date_strings = instance.send(association).order(column => :desc).pluck(column)
113
+ # dates = date_strings.map(&:to_date)
114
+ # dates.sort.reverse.uniq
115
+
100
116
  private
101
117
  def days
102
118
  @days ||= begin
103
- date_strings = instance.send(association).order(column => :desc).pluck(column)
104
- dates = date_strings.map(&:to_date)
105
- dates.sort.reverse.uniq
119
+ instance.send(association).map do |x|
120
+ x.send(column).in_time_zone.to_date
121
+ end.sort do |x, y|
122
+ x <=> y
123
+ end.reverse.uniq
106
124
  end
107
125
  end
108
126
  end
@@ -1,12 +1,14 @@
1
1
  require 'coveralls'
2
2
  Coveralls.wear!
3
3
 
4
+ require "active_support"
4
5
  require "streakable"
5
6
  require "database_cleaner"
6
7
  require "pry"
7
8
  require "support/database_cleaner"
8
9
  require "support/user"
9
10
  require "support/post"
11
+ require "sqlite3"
10
12
  require "timecop"
11
13
 
12
14
  ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
@@ -4,12 +4,19 @@ describe Streakable do
4
4
  let(:user) { User.create }
5
5
 
6
6
  let!(:posts) do
7
- post_dates.each do |date|
7
+ post_dates.map do |date|
8
8
  user.posts.create(created_at: date)
9
9
  end
10
10
  end
11
11
  let(:post_dates) { [] }
12
12
 
13
+ around do |example|
14
+ Time.zone = 'Eastern Time (US & Canada)'
15
+ Timecop.freeze(Time.current) do
16
+ example.run
17
+ end
18
+ end
19
+
13
20
  describe "#streak" do
14
21
  subject { user.streak(:posts) }
15
22
 
@@ -19,7 +26,7 @@ describe Streakable do
19
26
  end
20
27
 
21
28
  context "user posted on each of the last three days" do
22
- let(:post_dates) { [2.days.ago, 1.day.ago, DateTime.current] }
29
+ let(:post_dates) { [Time.current-2.days, Time.current-1.days, Time.current] }
23
30
 
24
31
  it "returns the streak" do
25
32
  expect(subject).to eq(posts.size)
@@ -27,10 +34,10 @@ describe Streakable do
27
34
  end
28
35
 
29
36
  context "user only has a post today" do
30
- let(:post_dates) { [DateTime.current] }
37
+ let(:post_dates) { [Time.current] }
31
38
  before do
32
39
  expect(user.posts.length).to eql(1)
33
- expect(user.posts.first.created_at.to_date).to eql(Date.current)
40
+ expect(user.posts.first.created_at.in_time_zone.to_date).to eql(Date.current)
34
41
  end
35
42
 
36
43
  it "returns the streak of 1" do
@@ -39,7 +46,7 @@ describe Streakable do
39
46
  end
40
47
 
41
48
  context "user has streak today, and a longer streak before that" do
42
- let(:post_dates) { [5.days.ago, 4.days.ago, 3.days.ago, 1.day.ago, DateTime.current] }
49
+ let(:post_dates) { [Time.current-5.days, Time.current-4.days, Time.current-3.days, Time.current-1.days, Time.current] }
43
50
 
44
51
  it "still returns the current streak" do
45
52
  expect(subject).to eq(2)
@@ -55,7 +62,7 @@ describe Streakable do
55
62
  end
56
63
 
57
64
  context "user has streak today, and a shorter streak before that" do
58
- let(:post_dates) { [5.days.ago, 4.days.ago, 2.days.ago, 1.day.ago, DateTime.current] }
65
+ let(:post_dates) { [Time.current-5.days, Time.current-4.days, Time.current-2.days, Time.current-1.days, Time.current] }
59
66
 
60
67
  it "still returns the current streak" do
61
68
  expect(subject).to eq(3)
@@ -71,7 +78,7 @@ describe Streakable do
71
78
  end
72
79
 
73
80
  context "user didn't post today, but has a streak before that" do
74
- let(:post_dates) { [3.days.ago, 2.day.ago, 1.day.ago] }
81
+ let(:post_dates) { [Time.current-3.days, Time.current-2.days, Time.current-1.day] }
75
82
  before { expect(post_dates.map(&:to_date)).to_not include(Date.current) }
76
83
 
77
84
  it "returns streak of zero" do
@@ -87,7 +94,7 @@ describe Streakable do
87
94
  end
88
95
 
89
96
  context "but has three streaks, longest in the middle" do
90
- let(:post_dates) { [3.days.ago, 4.days.ago, 6.days.ago, 7.days.ago, 8.days.ago, 10.days.ago, 11.days.ago] }
97
+ let(:post_dates) { [Date.current-3, Date.current-4, Date.current-6, Date.current-7, Date.current-8, Date.current-10, Date.current-11] }
91
98
 
92
99
  it "returns 0" do
93
100
  expect(subject).to eq(0)
@@ -96,12 +103,8 @@ describe Streakable do
96
103
  end
97
104
 
98
105
  context "spanning two months" do
99
- around do |example|
100
- Timecop.freeze(DateTime.current.beginning_of_month) do
101
- example.run
102
- end
103
- end
104
- let(:post_dates) { [1.day.ago, DateTime.current] }
106
+ let(:freeze_time) { Time.current.beginning_of_month }
107
+ let(:post_dates) { [1.day.ago, Time.current] }
105
108
 
106
109
  it "returns a streak of 2" do
107
110
  expect(subject).to eq(2)
@@ -118,7 +121,7 @@ describe Streakable do
118
121
  end
119
122
 
120
123
  context "user posted on each of the last two days" do
121
- let(:post_dates) { [1.day.ago, DateTime.current] }
124
+ let(:post_dates) { [1.day.ago, Time.current] }
122
125
 
123
126
  it "returns the streak" do
124
127
  expect(subject).to eq([[Date.current, 1.day.ago.to_date]])
@@ -126,18 +129,18 @@ describe Streakable do
126
129
  end
127
130
 
128
131
  context "user posted on each of the last three days" do
129
- let(:post_dates) { [2.days.ago, 1.day.ago, DateTime.current] }
132
+ let(:post_dates) { [Time.current-2.days, Time.current-1.days, Time.current] }
130
133
 
131
134
  it "returns the streak" do
132
- expect(subject).to eq([[Date.current, 1.day.ago.to_date, 2.days.ago.to_date]])
135
+ expect(subject).to eq([[Date.current, Date.current-1, Date.current-2]])
133
136
  end
134
137
  end
135
138
 
136
139
  context "user only has a post today" do
137
- let(:post_dates) { [DateTime.current] }
140
+ let(:post_dates) { [Time.current] }
138
141
  before do
139
142
  expect(user.posts.length).to eql(1)
140
- expect(user.posts.first.created_at.to_date).to eql(Date.current)
143
+ expect(user.posts.first.created_at.in_time_zone.to_date).to eql(Date.current)
141
144
  end
142
145
 
143
146
  it "returns the streak of 1" do
@@ -146,22 +149,22 @@ describe Streakable do
146
149
  end
147
150
 
148
151
  context "user only has a post yesterday" do
149
- let(:post_dates) { [DateTime.current.yesterday] }
152
+ let(:post_dates) { [Time.current-1.day] }
150
153
  before do
151
154
  expect(user.posts.length).to eql(1)
152
- expect(user.posts.first.created_at.to_date).to eql(Date.current.yesterday)
155
+ expect(user.posts.first.created_at.in_time_zone.to_date).to eql(Date.current-1)
153
156
  end
154
157
 
155
158
  it "returns the streak of 1" do
156
- expect(subject).to eq([[Date.current.yesterday]])
159
+ expect(subject).to eq([[Date.current-1]])
157
160
  end
158
161
  end
159
162
 
160
163
  context "user has streak today, and a longer streak before that" do
161
- let(:post_dates) { [DateTime.current, 1.day.ago, 3.days.ago, 4.days.ago, 5.days.ago] }
164
+ let(:post_dates) { [Time.current, Time.current-1.days, Time.current-3.days, Time.current-4.days, Time.current-5.days] }
162
165
 
163
166
  it "returns the streaks" do
164
- expected = [[Date.current, 1.day.ago], [3.days.ago, 4.days.ago, 5.days.ago]].map do |x|
167
+ expected = [[Date.current, Date.current-1], [Date.current-3, Date.current-4, Date.current-5]].map do |x|
165
168
  x.map(&:to_date)
166
169
  end
167
170
 
@@ -170,10 +173,10 @@ describe Streakable do
170
173
  end
171
174
 
172
175
  context "user didn't post today, but has a streak of 3 before that" do
173
- let(:post_dates) { [1.days.ago, 2.days.ago, 3.day.ago] }
176
+ let(:post_dates) { [Time.current-1.days, Time.current-2.days, Time.current-3.days] }
174
177
 
175
178
  it "returns the streak" do
176
- expected = [[1.day.ago, 2.days.ago, 3.days.ago]].map do |x|
179
+ expected = [[Date.current-1, Date.current-2, Date.current-3]].map do |x|
177
180
  x.map(&:to_date)
178
181
  end
179
182
 
@@ -182,14 +185,19 @@ describe Streakable do
182
185
  end
183
186
 
184
187
  context "user has three streaks, longest in the middle" do
185
- let(:post_dates) { [3.days.ago, 4.days.ago, 6.days.ago, 7.days.ago, 8.days.ago, 10.days.ago, 11.days.ago] }
188
+ let(:post_dates_dates_ago) { [3, 4, 6, 7, 8, 10, 11] }
189
+ let(:post_dates) do
190
+ post_dates_dates_ago.map {|n| Time.current - n.days}
191
+ end
186
192
 
187
- it "returns the streaks" do
188
- expected = [[3.days.ago, 4.days.ago], [6.days.ago, 7.days.ago, 8.days.ago], [10.days.ago, 11.days.ago]].map do |x|
189
- x.map(&:to_date)
193
+ let(:expected_days_ago) do
194
+ [[3, 4], [6, 7, 8], [10, 11]].map do |list|
195
+ list.map {|n| Date.current - n}
190
196
  end
197
+ end
191
198
 
192
- expect(subject).to eq(expected)
199
+ it "returns the streaks" do
200
+ expect(subject).to eq(expected_days_ago)
193
201
  end
194
202
  end
195
203
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'streakable'
5
- spec.version = '0.2.0'
5
+ spec.version = '0.3.0'
6
6
  spec.authors = ['szTheory', 'Garrett Martin']
7
7
  spec.description = %q{Track consecutive day streaks on Rails/ActiveRecord models.}
8
8
  spec.summary = %q{Easily track consecutive day streaks on your Rails/ActiveRecord model associations for a given date column.}
@@ -19,13 +19,15 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_runtime_dependency 'activerecord', '>= 3.2.22'
21
21
 
22
- spec.add_development_dependency 'appraisal', '~> 2.2', '>= 2.2.0'
23
- spec.add_development_dependency 'bundler', '>= 1.3', '>= 1.3'
24
- spec.add_development_dependency 'coveralls', '~> 0.8', '>= 0.8.22'
25
- spec.add_development_dependency 'database_cleaner', '~> 1.7.0', '>= 1.7.0'
26
- spec.add_development_dependency 'pry', '~> 0.11', '>= 0.11.3'
27
- spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.1'
28
- spec.add_development_dependency 'rspec', '~> 3.8', '>= 3.8.0'
29
- spec.add_development_dependency 'sqlite3', '~> 1.3.6'
30
- spec.add_development_dependency 'timecop', '~> 0.9', '>= 0.9.1'
22
+ spec.add_development_dependency 'appraisal'
23
+ spec.add_development_dependency 'bundler'
24
+ spec.add_development_dependency 'coveralls'
25
+ spec.add_development_dependency 'database_cleaner'
26
+ spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'sqlite3'
30
+ spec.add_development_dependency 'timecop'
31
+ spec.add_development_dependency 'activesupport'
32
+ spec.add_development_dependency 'pry-coolline'
31
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: streakable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - szTheory
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-02-20 00:00:00.000000000 Z
12
+ date: 2019-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -29,170 +29,156 @@ dependencies:
29
29
  name: appraisal
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '2.2'
35
32
  - - ">="
36
33
  - !ruby/object:Gem::Version
37
- version: 2.2.0
34
+ version: '0'
38
35
  type: :development
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
38
  requirements:
42
- - - "~>"
43
- - !ruby/object:Gem::Version
44
- version: '2.2'
45
39
  - - ">="
46
40
  - !ruby/object:Gem::Version
47
- version: 2.2.0
41
+ version: '0'
48
42
  - !ruby/object:Gem::Dependency
49
43
  name: bundler
50
44
  requirement: !ruby/object:Gem::Requirement
51
45
  requirements:
52
46
  - - ">="
53
47
  - !ruby/object:Gem::Version
54
- version: '1.3'
48
+ version: '0'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
52
  requirements:
59
53
  - - ">="
60
54
  - !ruby/object:Gem::Version
61
- version: '1.3'
55
+ version: '0'
62
56
  - !ruby/object:Gem::Dependency
63
57
  name: coveralls
64
58
  requirement: !ruby/object:Gem::Requirement
65
59
  requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.8'
69
60
  - - ">="
70
61
  - !ruby/object:Gem::Version
71
- version: 0.8.22
62
+ version: '0'
72
63
  type: :development
73
64
  prerelease: false
74
65
  version_requirements: !ruby/object:Gem::Requirement
75
66
  requirements:
76
- - - "~>"
77
- - !ruby/object:Gem::Version
78
- version: '0.8'
79
67
  - - ">="
80
68
  - !ruby/object:Gem::Version
81
- version: 0.8.22
69
+ version: '0'
82
70
  - !ruby/object:Gem::Dependency
83
71
  name: database_cleaner
84
72
  requirement: !ruby/object:Gem::Requirement
85
73
  requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: 1.7.0
89
74
  - - ">="
90
75
  - !ruby/object:Gem::Version
91
- version: 1.7.0
76
+ version: '0'
92
77
  type: :development
93
78
  prerelease: false
94
79
  version_requirements: !ruby/object:Gem::Requirement
95
80
  requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: 1.7.0
99
81
  - - ">="
100
82
  - !ruby/object:Gem::Version
101
- version: 1.7.0
83
+ version: '0'
102
84
  - !ruby/object:Gem::Dependency
103
85
  name: pry
104
86
  requirement: !ruby/object:Gem::Requirement
105
87
  requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '0.11'
109
88
  - - ">="
110
89
  - !ruby/object:Gem::Version
111
- version: 0.11.3
90
+ version: '0'
112
91
  type: :development
113
92
  prerelease: false
114
93
  version_requirements: !ruby/object:Gem::Requirement
115
94
  requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '0.11'
119
95
  - - ">="
120
96
  - !ruby/object:Gem::Version
121
- version: 0.11.3
97
+ version: '0'
122
98
  - !ruby/object:Gem::Dependency
123
99
  name: rake
124
100
  requirement: !ruby/object:Gem::Requirement
125
101
  requirements:
126
- - - "~>"
127
- - !ruby/object:Gem::Version
128
- version: '12.3'
129
102
  - - ">="
130
103
  - !ruby/object:Gem::Version
131
- version: 12.3.1
104
+ version: '0'
132
105
  type: :development
133
106
  prerelease: false
134
107
  version_requirements: !ruby/object:Gem::Requirement
135
108
  requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '12.3'
139
109
  - - ">="
140
110
  - !ruby/object:Gem::Version
141
- version: 12.3.1
111
+ version: '0'
142
112
  - !ruby/object:Gem::Dependency
143
113
  name: rspec
144
114
  requirement: !ruby/object:Gem::Requirement
145
115
  requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '3.8'
149
116
  - - ">="
150
117
  - !ruby/object:Gem::Version
151
- version: 3.8.0
118
+ version: '0'
152
119
  type: :development
153
120
  prerelease: false
154
121
  version_requirements: !ruby/object:Gem::Requirement
155
122
  requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '3.8'
159
123
  - - ">="
160
124
  - !ruby/object:Gem::Version
161
- version: 3.8.0
125
+ version: '0'
162
126
  - !ruby/object:Gem::Dependency
163
127
  name: sqlite3
164
128
  requirement: !ruby/object:Gem::Requirement
165
129
  requirements:
166
- - - "~>"
130
+ - - ">="
167
131
  - !ruby/object:Gem::Version
168
- version: 1.3.6
132
+ version: '0'
169
133
  type: :development
170
134
  prerelease: false
171
135
  version_requirements: !ruby/object:Gem::Requirement
172
136
  requirements:
173
- - - "~>"
137
+ - - ">="
174
138
  - !ruby/object:Gem::Version
175
- version: 1.3.6
139
+ version: '0'
176
140
  - !ruby/object:Gem::Dependency
177
141
  name: timecop
178
142
  requirement: !ruby/object:Gem::Requirement
179
143
  requirements:
180
- - - "~>"
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
181
152
  - !ruby/object:Gem::Version
182
- version: '0.9'
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: activesupport
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
183
158
  - - ">="
184
159
  - !ruby/object:Gem::Version
185
- version: 0.9.1
160
+ version: '0'
186
161
  type: :development
187
162
  prerelease: false
188
163
  version_requirements: !ruby/object:Gem::Requirement
189
164
  requirements:
190
- - - "~>"
165
+ - - ">="
191
166
  - !ruby/object:Gem::Version
192
- version: '0.9'
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: pry-coolline
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
193
179
  - - ">="
194
180
  - !ruby/object:Gem::Version
195
- version: 0.9.1
181
+ version: '0'
196
182
  description: Track consecutive day streaks on Rails/ActiveRecord models.
197
183
  email:
198
184
  executables: []
@@ -202,8 +188,8 @@ files:
202
188
  - ".gitignore"
203
189
  - ".travis.yml"
204
190
  - Appraisals
191
+ - CHANGELOG.md
205
192
  - Gemfile
206
- - Gemfile.lock
207
193
  - LICENSE.txt
208
194
  - README.md
209
195
  - Rakefile
@@ -212,6 +198,7 @@ files:
212
198
  - gemfiles/rails3.gemfile
213
199
  - gemfiles/rails4.gemfile
214
200
  - gemfiles/rails5.gemfile
201
+ - gemfiles/rails6.gemfile
215
202
  - lib/streakable.rb
216
203
  - lib/streakable/streak.rb
217
204
  - spec/spec_helper.rb
@@ -1,90 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- streakable (0.2.0)
5
- activerecord (>= 3.2.22)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activemodel (5.2.2)
11
- activesupport (= 5.2.2)
12
- activerecord (5.2.2)
13
- activemodel (= 5.2.2)
14
- activesupport (= 5.2.2)
15
- arel (>= 9.0)
16
- activesupport (5.2.2)
17
- concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 0.7, < 2)
19
- minitest (~> 5.1)
20
- tzinfo (~> 1.1)
21
- appraisal (2.2.0)
22
- bundler
23
- rake
24
- thor (>= 0.14.0)
25
- arel (9.0.0)
26
- coderay (1.1.2)
27
- concurrent-ruby (1.1.4)
28
- coveralls (0.8.22)
29
- json (>= 1.8, < 3)
30
- simplecov (~> 0.16.1)
31
- term-ansicolor (~> 1.3)
32
- thor (~> 0.19.4)
33
- tins (~> 1.6)
34
- database_cleaner (1.7.0)
35
- diff-lcs (1.3)
36
- docile (1.3.1)
37
- i18n (1.5.3)
38
- concurrent-ruby (~> 1.0)
39
- json (2.1.0)
40
- method_source (0.9.2)
41
- minitest (5.11.3)
42
- pry (0.12.2)
43
- coderay (~> 1.1.0)
44
- method_source (~> 0.9.0)
45
- rake (12.3.2)
46
- rspec (3.8.0)
47
- rspec-core (~> 3.8.0)
48
- rspec-expectations (~> 3.8.0)
49
- rspec-mocks (~> 3.8.0)
50
- rspec-core (3.8.0)
51
- rspec-support (~> 3.8.0)
52
- rspec-expectations (3.8.2)
53
- diff-lcs (>= 1.2.0, < 2.0)
54
- rspec-support (~> 3.8.0)
55
- rspec-mocks (3.8.0)
56
- diff-lcs (>= 1.2.0, < 2.0)
57
- rspec-support (~> 3.8.0)
58
- rspec-support (3.8.0)
59
- simplecov (0.16.1)
60
- docile (~> 1.1)
61
- json (>= 1.8, < 3)
62
- simplecov-html (~> 0.10.0)
63
- simplecov-html (0.10.2)
64
- sqlite3 (1.3.13)
65
- term-ansicolor (1.7.1)
66
- tins (~> 1.0)
67
- thor (0.19.4)
68
- thread_safe (0.3.6)
69
- timecop (0.9.1)
70
- tins (1.20.2)
71
- tzinfo (1.2.5)
72
- thread_safe (~> 0.1)
73
-
74
- PLATFORMS
75
- ruby
76
-
77
- DEPENDENCIES
78
- appraisal (~> 2.2, >= 2.2.0)
79
- bundler (>= 1.3)
80
- coveralls (~> 0.8, >= 0.8.22)
81
- database_cleaner (~> 1.7.0, >= 1.7.0)
82
- pry (~> 0.11, >= 0.11.3)
83
- rake (~> 12.3, >= 12.3.1)
84
- rspec (~> 3.8, >= 3.8.0)
85
- sqlite3 (~> 1.3.6)
86
- streakable!
87
- timecop (~> 0.9, >= 0.9.1)
88
-
89
- BUNDLED WITH
90
- 1.17.3