streakable 0.2.0 → 0.3.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: 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