redis-objects-periodical 0.4.1 → 0.6.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: 3aec4e9399f53e559f5ba5cb679c4e241bc6a4658f3eb3a88ad02e6b6be479c2
4
- data.tar.gz: 232eac099ff37e6751e5335a2312b90103e9eb27f5171d4868c46263ceef66c0
3
+ metadata.gz: 9a9f66a51e7b0786e3207daefee47c2ae7a792b512229e6d7b5ac6c40ed4b956
4
+ data.tar.gz: 38806524dc3b3d67ab62d76c1b3416518eecb2ba301d66c08eea29f3f88da13e
5
5
  SHA512:
6
- metadata.gz: c0b7f4c767fed43ac27a8c42adff62c56f91940428804e5f768054f2267300e39067c63c44e06da66ef460caef1c57d1df621d3a5288acb7163f0deb25727521
7
- data.tar.gz: 659fb95d1099602eb52d256c43d9d2f703666a56d631e6ee7fd7afbba8ff5faa2ef56640bdfaac6a5723dfd1114b7095a5471f3475e8c6e5d0f84a68d6ab679b
6
+ metadata.gz: b3b3f462b12369d577165c968ce73fdd8d17589654ce553d0a98bf5922ad5a075808154590d7e9dc1b89555438f24bbd3052a2085b17980eb08251ec570cf3df
7
+ data.tar.gz: f8ef4de2a9b40c7efada26b858edd6cb546693d18e0d2b075b4f80c26f879e06fa79308bc9b9a2fcb509fc5556a4cc3afd6584c799c6725fe87074ff21e1f3d3
data/.circleci/config.yml CHANGED
@@ -12,8 +12,8 @@ references:
12
12
  - &ruby_version
13
13
  ruby_version:
14
14
  type: enum
15
- enum: ["2.7", "3.0", "3.1"]
16
- default: "3.1"
15
+ enum: ["2.7", "3.0", "3.1", "3.2"]
16
+ default: "3.2"
17
17
 
18
18
  executors:
19
19
  default:
@@ -126,7 +126,7 @@ jobs:
126
126
  - code-climate/install
127
127
  - code-climate/sum-coverage:
128
128
  input: codeclimate.*.json
129
- parts: 3
129
+ parts: 4
130
130
  - code-climate/upload-coverage
131
131
  rubocop:
132
132
  parameters:
@@ -168,6 +168,9 @@ workflows:
168
168
  - build:
169
169
  name: build_on_ruby_3.1
170
170
  ruby_version: "3.1"
171
+ - build:
172
+ name: build_on_ruby_3.2
173
+ ruby_version: "3.2"
171
174
  - rubocop:
172
175
  ruby_version: "2.7"
173
176
  - yardoc
@@ -176,12 +179,14 @@ workflows:
176
179
  - build_on_ruby_2.7
177
180
  - build_on_ruby_3.0
178
181
  - build_on_ruby_3.1
182
+ - build_on_ruby_3.2
179
183
  - release:
180
184
  context: RubyGems API Key
181
185
  requires:
182
186
  - build_on_ruby_2.7
183
187
  - build_on_ruby_3.0
184
188
  - build_on_ruby_3.1
189
+ - build_on_ruby_3.2
185
190
  - rubocop
186
191
  filters:
187
192
  branches:
data/.rubocop.yml CHANGED
@@ -14,7 +14,6 @@ Layout/LineLength:
14
14
  Metrics/BlockLength:
15
15
  Exclude:
16
16
  - "spec/**/*"
17
- - "redis-objects-daily-counter.gemspec"
18
17
  - "redis-objects-periodical.gemspec"
19
18
 
20
19
  Metrics/MethodLength:
@@ -24,6 +23,9 @@ Naming/FileName:
24
23
  Exclude:
25
24
  - "lib/redis-objects-periodical.rb"
26
25
 
26
+ Style/DocumentDynamicEvalDefinition:
27
+ Enabled: false
28
+
27
29
  Style/TrailingCommaInArrayLiteral:
28
30
  EnforcedStyleForMultiline: comma
29
31
 
data/.rubocop_todo.yml CHANGED
@@ -1,16 +1,25 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2021-09-23 07:31:02 UTC using RuboCop version 0.93.1.
3
+ # on 2023-02-08 23:31:05 UTC using RuboCop version 1.45.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 6
10
- # Configuration parameters: IgnoredMethods.
11
- Metrics/AbcSize:
12
- Max: 21
13
-
14
- # Offense count: 41
9
+ # Offense count: 12
10
+ # Configuration parameters: AllowedConstants.
15
11
  Style/Documentation:
16
- Enabled: false
12
+ Exclude:
13
+ - 'spec/**/*'
14
+ - 'test/**/*'
15
+ - 'lib/redis-objects-periodical.rb'
16
+ - 'lib/redis/base_counter_object.rb'
17
+ - 'lib/redis/base_hash_key_object.rb'
18
+ - 'lib/redis/base_set_object.rb'
19
+ - 'lib/redis/recurring_at_intervals.rb'
20
+ - 'lib/redis/recurring_at_intervals/annual.rb'
21
+ - 'lib/redis/recurring_at_intervals/daily.rb'
22
+ - 'lib/redis/recurring_at_intervals/hourly.rb'
23
+ - 'lib/redis/recurring_at_intervals/minutely.rb'
24
+ - 'lib/redis/recurring_at_intervals/monthly.rb'
25
+ - 'lib/redis/recurring_at_intervals/weekly.rb'
data/CHANGELOG.md CHANGED
@@ -1,38 +1,86 @@
1
1
  # Change log
2
2
 
3
+ ## v0.6.0 (Feb 12, 2023)
4
+
5
+ ### Feature
6
+
7
+ - [#125](https://github.com/ryz310/redis-object-daily-counter/pull/125) Support Ruby 3.2 ([@ryz310](https://github.com/ryz310))
8
+
9
+ ### Rubocop Challenge
10
+
11
+ - [#104](https://github.com/ryz310/redis-object-daily-counter/pull/104) Style/RedundantStringEscape-20221214233055 ([@ryz310](https://github.com/ryz310))
12
+ - [#124](https://github.com/ryz310/redis-object-daily-counter/pull/124) Re-generate .rubocop_todo.yml with RuboCop v1.45.1 ([@ryz310](https://github.com/ryz310))
13
+
14
+ ### Dependabot
15
+
16
+ - [#70](https://github.com/ryz310/redis-object-daily-counter/pull/70) Bump rspec from 3.11.0 to 3.12.0 ([@ryz310](https://github.com/ryz310))
17
+ - [#101](https://github.com/ryz310/redis-object-daily-counter/pull/101) Bump timecop from 0.9.5 to 0.9.6 ([@ryz310](https://github.com/ryz310))
18
+ - [#109](https://github.com/ryz310/redis-object-daily-counter/pull/109) Bump rubocop-performance from 1.15.1 to 1.15.2 ([@ryz310](https://github.com/ryz310))
19
+ - [#110](https://github.com/ryz310/redis-object-daily-counter/pull/110) Bump simplecov from 0.21.2 to 0.22.0 ([@ryz310](https://github.com/ryz310))
20
+ - [#116](https://github.com/ryz310/redis-object-daily-counter/pull/116) Bump rubocop-rspec from 2.18.0 to 2.18.1 ([@ryz310](https://github.com/ryz310))
21
+ - [#122](https://github.com/ryz310/redis-object-daily-counter/pull/122) Bump rubocop-performance from 1.15.2 to 1.16.0 ([@ryz310](https://github.com/ryz310))
22
+
23
+ ## v0.5.0 (Sep 29, 2022)
24
+
25
+ ### Feature
26
+
27
+ - [#34](https://github.com/ryz310/redis-object-daily-counter/pull/34) Enhanced type casting from Time to Date ([@ryz310](https://github.com/ryz310))
28
+
29
+ Enhances casting from `Time` to `Date`.
30
+
31
+ #### Before
32
+
33
+ ```rb
34
+ homepage = Homepage.new
35
+ homepage.daily_active_users[Date.new(2021, 4, 1)] # OK
36
+ homepage.daily_active_users[Time.local(2021, 4, 1, 0, 0, 0)] # Error!
37
+ ```
38
+
39
+ #### After
40
+
41
+ ```rb
42
+ homepage = Homepage.new
43
+ homepage.daily_active_users[Date.new(2021, 4, 1)] # OK
44
+ homepage.daily_active_users[Time.local(2021, 4, 1, 0, 0, 0)] # OK
45
+ ```
46
+
47
+ ### Misc
48
+
49
+ - [#25](https://github.com/ryz310/redis-object-daily-counter/pull/25) Remove needless files ([@ryz310](https://github.com/ryz310))
50
+
3
51
  ## v0.4.1 (Jul 27, 2022)
4
52
 
5
53
  ### Misc
6
54
 
7
- - [#22](https://github.com/ryz310/redis-object-periodical/pull/22) Rename from redis-object-daily-counter to redis-object-periodical ([@ryz310](https://github.com/ryz310))
55
+ - [#22](https://github.com/ryz310/redis-objects-periodical/pull/22) Rename from redis-object-daily-counter to redis-objects-periodical ([@ryz310](https://github.com/ryz310))
8
56
 
9
57
  ## v0.4.0 (Jul 26, 2022)
10
58
 
11
59
  ### Feature
12
60
 
13
- - [#17](https://github.com/ryz310/redis-object-periodical/pull/17) Support `Redis::HashKey` as a recurring object ([@ryz310](https://github.com/ryz310))
61
+ - [#17](https://github.com/ryz310/redis-objects-periodical/pull/17) Support `Redis::HashKey` as a recurring object ([@ryz310](https://github.com/ryz310))
14
62
 
15
63
  ### Breaking Change
16
64
 
17
- - [#18](https://github.com/ryz310/redis-object-periodical/pull/18) Bump up Ruby 3.1 and drop support Ruby 2.6 ([@ryz310](https://github.com/ryz310))
65
+ - [#18](https://github.com/ryz310/redis-objects-periodical/pull/18) Bump up Ruby 3.1 and drop support Ruby 2.6 ([@ryz310](https://github.com/ryz310))
18
66
 
19
67
  ### Dependabot
20
68
 
21
- - [#16](https://github.com/ryz310/redis-object-periodical/pull/16) Bump yard from 0.9.26 to 0.9.28 ([@ryz310](https://github.com/ryz310))
22
- - [#15](https://github.com/ryz310/redis-object-periodical/pull/15) Bump rspec_junit_formatter from 0.4.1 to 0.5.1 ([@ryz310](https://github.com/ryz310))
23
- - [#13](https://github.com/ryz310/redis-object-periodical/pull/13) Bump rspec from 3.10.0 to 3.11.0 ([@ryz310](https://github.com/ryz310))
24
- - [#14](https://github.com/ryz310/redis-object-periodical/pull/14) Bump timecop from 0.9.4 to 0.9.5 ([@ryz310](https://github.com/ryz310))
25
- - [#12](https://github.com/ryz310/redis-object-periodical/pull/12) Bump redis-objects from 1.5.1 to 1.7.0 ([@ryz310](https://github.com/ryz310))
69
+ - [#16](https://github.com/ryz310/redis-objects-periodical/pull/16) Bump yard from 0.9.26 to 0.9.28 ([@ryz310](https://github.com/ryz310))
70
+ - [#15](https://github.com/ryz310/redis-objects-periodical/pull/15) Bump rspec_junit_formatter from 0.4.1 to 0.5.1 ([@ryz310](https://github.com/ryz310))
71
+ - [#13](https://github.com/ryz310/redis-objects-periodical/pull/13) Bump rspec from 3.10.0 to 3.11.0 ([@ryz310](https://github.com/ryz310))
72
+ - [#14](https://github.com/ryz310/redis-objects-periodical/pull/14) Bump timecop from 0.9.4 to 0.9.5 ([@ryz310](https://github.com/ryz310))
73
+ - [#12](https://github.com/ryz310/redis-objects-periodical/pull/12) Bump redis-objects from 1.5.1 to 1.7.0 ([@ryz310](https://github.com/ryz310))
26
74
 
27
75
  ### Misc
28
76
 
29
- - [#19](https://github.com/ryz310/redis-object-periodical/pull/19) Reduce similar source codes with meta programming ([@ryz310](https://github.com/ryz310))
77
+ - [#19](https://github.com/ryz310/redis-objects-periodical/pull/19) Reduce similar source codes with meta programming ([@ryz310](https://github.com/ryz310))
30
78
 
31
79
  ## v0.3.0 (Sep 23, 2021)
32
80
 
33
81
  ### Feature
34
82
 
35
- - [#7](https://github.com/ryz310/redis-object-periodical/pull/7) Add daily set ([@ryz310](https://github.com/ryz310))
83
+ - [#7](https://github.com/ryz310/redis-objects-periodical/pull/7) Add daily set ([@ryz310](https://github.com/ryz310))
36
84
 
37
85
  > You can use `daily_set` in addition to the standard features of Redis::Objects.
38
86
  >
@@ -75,7 +123,7 @@
75
123
 
76
124
  ### Breaking Change
77
125
 
78
- - [#7](https://github.com/ryz310/redis-object-periodical/pull/7) Add daily set ([@ryz310](https://github.com/ryz310))
126
+ - [#7](https://github.com/ryz310/redis-objects-periodical/pull/7) Add daily set ([@ryz310](https://github.com/ryz310))
79
127
 
80
128
  > Rename the method from #delete to #delete_at a73251f
81
129
  >
data/Gemfile CHANGED
@@ -3,16 +3,16 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in redis-objects-periodical.gemspec
6
- gemspec name: 'redis-objects-periodical'
6
+ gemspec
7
7
 
8
8
  gem 'bundler', '>= 2.0'
9
9
  gem 'pry-byebug'
10
10
  gem 'rake', '~> 13.0'
11
- gem 'rspec', '~> 3.11'
11
+ gem 'rspec', '~> 3.12'
12
12
  gem 'rspec_junit_formatter'
13
- gem 'rubocop', '~> 0.80'
13
+ gem 'rubocop', '~> 1.36'
14
14
  gem 'rubocop-performance'
15
15
  gem 'rubocop-rspec'
16
- gem 'simplecov', '0.21.2'
16
+ gem 'simplecov', '0.22.0'
17
17
  gem 'timecop'
18
18
  gem 'yard'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- redis-objects-periodical (0.4.1)
4
+ redis-objects-periodical (0.6.0)
5
5
  redis-objects
6
6
 
7
7
  GEM
@@ -10,66 +10,74 @@ GEM
10
10
  ast (2.4.2)
11
11
  byebug (11.1.3)
12
12
  coderay (1.1.3)
13
+ connection_pool (2.3.0)
13
14
  diff-lcs (1.5.0)
14
15
  docile (1.4.0)
16
+ json (2.6.3)
15
17
  method_source (1.0.0)
16
18
  parallel (1.22.1)
17
- parser (3.1.2.0)
19
+ parser (3.2.1.0)
18
20
  ast (~> 2.4.1)
19
- pry (0.13.1)
21
+ pry (0.14.2)
20
22
  coderay (~> 1.1)
21
23
  method_source (~> 1.0)
22
- pry-byebug (3.9.0)
24
+ pry-byebug (3.10.1)
23
25
  byebug (~> 11.0)
24
- pry (~> 0.13.0)
26
+ pry (>= 0.13, < 0.15)
25
27
  rainbow (3.1.1)
26
28
  rake (13.0.6)
27
- redis (4.7.1)
29
+ redis (5.0.6)
30
+ redis-client (>= 0.9.0)
31
+ redis-client (0.12.1)
32
+ connection_pool
28
33
  redis-objects (1.7.0)
29
34
  redis
30
- regexp_parser (2.5.0)
35
+ regexp_parser (2.7.0)
31
36
  rexml (3.2.5)
32
- rspec (3.11.0)
33
- rspec-core (~> 3.11.0)
34
- rspec-expectations (~> 3.11.0)
35
- rspec-mocks (~> 3.11.0)
36
- rspec-core (3.11.0)
37
- rspec-support (~> 3.11.0)
38
- rspec-expectations (3.11.0)
37
+ rspec (3.12.0)
38
+ rspec-core (~> 3.12.0)
39
+ rspec-expectations (~> 3.12.0)
40
+ rspec-mocks (~> 3.12.0)
41
+ rspec-core (3.12.1)
42
+ rspec-support (~> 3.12.0)
43
+ rspec-expectations (3.12.2)
39
44
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.11.0)
41
- rspec-mocks (3.11.1)
45
+ rspec-support (~> 3.12.0)
46
+ rspec-mocks (3.12.3)
42
47
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.11.0)
44
- rspec-support (3.11.0)
45
- rspec_junit_formatter (0.5.1)
48
+ rspec-support (~> 3.12.0)
49
+ rspec-support (3.12.0)
50
+ rspec_junit_formatter (0.6.0)
46
51
  rspec-core (>= 2, < 4, != 2.12.0)
47
- rubocop (0.93.1)
52
+ rubocop (1.45.1)
53
+ json (~> 2.3)
48
54
  parallel (~> 1.10)
49
- parser (>= 2.7.1.5)
55
+ parser (>= 3.2.0.0)
50
56
  rainbow (>= 2.2.2, < 4.0)
51
- regexp_parser (>= 1.8)
52
- rexml
53
- rubocop-ast (>= 0.6.0)
57
+ regexp_parser (>= 1.8, < 3.0)
58
+ rexml (>= 3.2.5, < 4.0)
59
+ rubocop-ast (>= 1.24.1, < 2.0)
54
60
  ruby-progressbar (~> 1.7)
55
- unicode-display_width (>= 1.4.0, < 2.0)
56
- rubocop-ast (1.19.1)
57
- parser (>= 3.1.1.0)
58
- rubocop-performance (1.10.2)
59
- rubocop (>= 0.90.0, < 2.0)
61
+ unicode-display_width (>= 2.4.0, < 3.0)
62
+ rubocop-ast (1.26.0)
63
+ parser (>= 3.2.1.0)
64
+ rubocop-capybara (2.17.0)
65
+ rubocop (~> 1.41)
66
+ rubocop-performance (1.16.0)
67
+ rubocop (>= 1.7.0, < 2.0)
60
68
  rubocop-ast (>= 0.4.0)
61
- rubocop-rspec (1.44.1)
62
- rubocop (~> 0.87)
63
- rubocop-ast (>= 0.7.1)
69
+ rubocop-rspec (2.18.1)
70
+ rubocop (~> 1.33)
71
+ rubocop-capybara (~> 2.17)
64
72
  ruby-progressbar (1.11.0)
65
- simplecov (0.21.2)
73
+ simplecov (0.22.0)
66
74
  docile (~> 1.1)
67
75
  simplecov-html (~> 0.11)
68
76
  simplecov_json_formatter (~> 0.1)
69
77
  simplecov-html (0.12.3)
70
78
  simplecov_json_formatter (0.1.4)
71
- timecop (0.9.5)
72
- unicode-display_width (1.8.0)
79
+ timecop (0.9.6)
80
+ unicode-display_width (2.4.2)
73
81
  webrick (1.7.0)
74
82
  yard (0.9.28)
75
83
  webrick (~> 1.7.0)
@@ -85,14 +93,14 @@ DEPENDENCIES
85
93
  pry-byebug
86
94
  rake (~> 13.0)
87
95
  redis-objects-periodical!
88
- rspec (~> 3.11)
96
+ rspec (~> 3.12)
89
97
  rspec_junit_formatter
90
- rubocop (~> 0.80)
98
+ rubocop (~> 1.36)
91
99
  rubocop-performance
92
100
  rubocop-rspec
93
- simplecov (= 0.21.2)
101
+ simplecov (= 0.22.0)
94
102
  timecop
95
103
  yard
96
104
 
97
105
  BUNDLED WITH
98
- 2.3.11
106
+ 2.3.26
data/Rakefile CHANGED
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler/gem_helper'
4
-
5
- Bundler::GemHelper.install_tasks(name: 'redis-objects-periodical')
6
-
3
+ require 'bundler/gem_tasks'
7
4
  require 'rspec/core/rake_task'
8
5
 
9
6
  RSpec::Core::RakeTask.new(:spec)
@@ -3,7 +3,7 @@
3
3
  class Redis
4
4
  module Objects
5
5
  module Periodical
6
- VERSION = '0.4.1'
6
+ VERSION = '0.6.0'
7
7
  end
8
8
  end
9
9
  end
@@ -23,7 +23,7 @@ Redis::PERIODICALS.each do |periodical| # rubocop:disable Metrics/BlockLength
23
23
  )
24
24
  end
25
25
 
26
- define_method(:"#\{name\}=") do |values|
26
+ define_method(:"#\{name}=") do |values|
27
27
  hash_key = public_send(name)
28
28
 
29
29
  redis.pipelined do
@@ -23,7 +23,7 @@ Redis::PERIODICALS.each do |periodical| # rubocop:disable Metrics/BlockLength
23
23
  )
24
24
  end
25
25
 
26
- define_method(:"#\{name\}=") do |values|
26
+ define_method(:"#\{name}=") do |values|
27
27
  set = public_send(name)
28
28
 
29
29
  redis.pipelined do
@@ -5,13 +5,13 @@ class Redis
5
5
  module Annual
6
6
  private
7
7
 
8
- def redis_daily_field_key(date_or_time)
8
+ def redis_periodical_field_key(date_or_time)
9
9
  date_key = date_or_time.strftime('%Y')
10
10
  [original_key, date_key].flatten.join(':')
11
11
  end
12
12
 
13
- def next_key(date, length = 1)
14
- date.next_year(length)
13
+ def next_key(date_or_time, length = 1)
14
+ date_or_time.to_date.next_year(length)
15
15
  end
16
16
  end
17
17
  end
@@ -5,13 +5,13 @@ class Redis
5
5
  module Daily
6
6
  private
7
7
 
8
- def redis_daily_field_key(date_or_time)
8
+ def redis_periodical_field_key(date_or_time)
9
9
  date_key = date_or_time.strftime('%Y-%m-%d')
10
10
  [original_key, date_key].flatten.join(':')
11
11
  end
12
12
 
13
- def next_key(date, length = 1)
14
- date + length
13
+ def next_key(date_or_time, length = 1)
14
+ date_or_time.to_date + length
15
15
  end
16
16
  end
17
17
  end
@@ -5,13 +5,13 @@ class Redis
5
5
  module Hourly
6
6
  private
7
7
 
8
- def redis_daily_field_key(time)
8
+ def redis_periodical_field_key(time)
9
9
  time_key = time.strftime('%Y-%m-%dT%H')
10
10
  [original_key, time_key].flatten.join(':')
11
11
  end
12
12
 
13
13
  def next_key(time, length = 1)
14
- time + 3600 * length
14
+ time + (3600 * length)
15
15
  end
16
16
  end
17
17
  end
@@ -5,13 +5,13 @@ class Redis
5
5
  module Minutely
6
6
  private
7
7
 
8
- def redis_daily_field_key(time)
8
+ def redis_periodical_field_key(time)
9
9
  time_key = time.strftime('%Y-%m-%dT%H:%M')
10
10
  [original_key, time_key].flatten.join(':')
11
11
  end
12
12
 
13
13
  def next_key(time, length = 1)
14
- time + 60 * length
14
+ time + (60 * length)
15
15
  end
16
16
  end
17
17
  end
@@ -5,13 +5,13 @@ class Redis
5
5
  module Monthly
6
6
  private
7
7
 
8
- def redis_daily_field_key(date_or_time)
8
+ def redis_periodical_field_key(date_or_time)
9
9
  date_key = date_or_time.strftime('%Y-%m')
10
10
  [original_key, date_key].flatten.join(':')
11
11
  end
12
12
 
13
- def next_key(date, length = 1)
14
- date.next_month(length)
13
+ def next_key(date_or_time, length = 1)
14
+ date_or_time.to_date.next_month(length)
15
15
  end
16
16
  end
17
17
  end
@@ -5,13 +5,13 @@ class Redis
5
5
  module Weekly
6
6
  private
7
7
 
8
- def redis_daily_field_key(date_or_time)
8
+ def redis_periodical_field_key(date_or_time)
9
9
  date_key = date_or_time.strftime('%YW%W')
10
10
  [original_key, date_key].flatten.join(':')
11
11
  end
12
12
 
13
- def next_key(date, length = 1)
14
- date + 7 * length
13
+ def next_key(date_or_time, length = 1)
14
+ date_or_time.to_date + (7 * length)
15
15
  end
16
16
  end
17
17
  end
@@ -4,7 +4,7 @@ class Redis
4
4
  module RecurringAtIntervals
5
5
  def initialize(key, *args)
6
6
  @original_key = key
7
- super(redis_daily_field_key(current_time), *args)
7
+ super(redis_periodical_field_key(current_time), *args)
8
8
  end
9
9
 
10
10
  attr_reader :original_key
@@ -19,23 +19,23 @@ class Redis
19
19
  when -1 then nil # Ruby does this (a bit weird)
20
20
  end
21
21
  else
22
- get_value_from_redis(redis_daily_field_key(date_or_time))
22
+ get_value_from_redis(redis_periodical_field_key(date_or_time))
23
23
  end
24
24
  end
25
25
  alias slice []
26
26
 
27
27
  def delete_at(date_or_time)
28
- delete_from_redis(redis_daily_field_key(date_or_time))
28
+ delete_from_redis(redis_periodical_field_key(date_or_time))
29
29
  end
30
30
 
31
31
  def range(start_date_or_time, end_date_or_time)
32
32
  keys = []
33
- date_or_time = start_date_or_time
33
+ date_or_time = normalize(start_date_or_time)
34
34
 
35
35
  loop do
36
- break if date_or_time > end_date_or_time
36
+ break if date_or_time > normalize(end_date_or_time)
37
37
 
38
- keys << redis_daily_field_key(date_or_time)
38
+ keys << redis_periodical_field_key(date_or_time)
39
39
  date_or_time = next_key(date_or_time)
40
40
  end
41
41
 
@@ -43,7 +43,7 @@ class Redis
43
43
  end
44
44
 
45
45
  def at(date_or_time)
46
- get_redis_object(redis_daily_field_key(date_or_time))
46
+ get_redis_object(redis_periodical_field_key(date_or_time))
47
47
  end
48
48
 
49
49
  def current_time
@@ -68,12 +68,16 @@ class Redis
68
68
  raise 'not implemented'
69
69
  end
70
70
 
71
- def redis_daily_field_key(_date_or_time)
71
+ def redis_periodical_field_key(_date_or_time)
72
72
  raise 'not implemented'
73
73
  end
74
74
 
75
- def next_key(_date, _length = 1)
75
+ def next_key(_date_or_time, _length = 1)
76
76
  raise 'not implemented'
77
77
  end
78
+
79
+ def normalize(date_or_time)
80
+ next_key(date_or_time, 0)
81
+ end
78
82
  end
79
83
  end
@@ -33,4 +33,5 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  # For more information and examples about making a new gem, checkout our
35
35
  # guide at: https://bundler.io/guides/creating_gem.html
36
+ spec.metadata['rubygems_mfa_required'] = 'true'
36
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-objects-periodical
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryz310
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-26 00:00:00.000000000 Z
11
+ date: 2023-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis-objects
@@ -68,7 +68,6 @@ files:
68
68
  - lib/redis/recurring_at_intervals/minutely.rb
69
69
  - lib/redis/recurring_at_intervals/monthly.rb
70
70
  - lib/redis/recurring_at_intervals/weekly.rb
71
- - redis-objects-daily-counter.gemspec
72
71
  - redis-objects-periodical.gemspec
73
72
  homepage: https://github.com/ryz310/redis-objects-periodical
74
73
  licenses:
@@ -77,6 +76,7 @@ metadata:
77
76
  homepage_uri: https://github.com/ryz310/redis-objects-periodical
78
77
  source_code_uri: https://github.com/ryz310/redis-objects-periodical
79
78
  changelog_uri: https://github.com/ryz310/redis-objects-periodical/blob/master/CHANGELOG.md
79
+ rubygems_mfa_required: 'true'
80
80
  post_install_message:
81
81
  rdoc_options: []
82
82
  require_paths:
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  requirements: []
95
- rubygems_version: 3.3.11
95
+ rubygems_version: 3.4.6
96
96
  signing_key:
97
97
  specification_version: 4
98
98
  summary: Extends Redis::Objects as periodical.
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Gem::Specification.new do |spec|
4
- spec.name = 'redis-objects-daily-counter'
5
- spec.version = '0.4.1'
6
- spec.authors = ['ryz310']
7
- spec.email = ['ryz310@gmail.com']
8
-
9
- spec.summary = 'Daily counter within Redis::Objects'
10
- spec.description = 'Daily counter within Redis::Objects. Works with any class or ORM.'
11
- spec.post_install_message = 'The redis-objects-daily-counter gem has been deprecated and has '\
12
- 'been replaced by redis-objects-periodical. Please switch to '\
13
- 'redis-objects-periodical as soon as possible.'
14
- spec.homepage = 'https://github.com/ryz310/redis-objects-daily-counter'
15
- spec.license = 'MIT'
16
-
17
- spec.metadata['homepage_uri'] = spec.homepage
18
- spec.metadata['source_code_uri'] = 'https://github.com/ryz310/redis-objects-daily-counter'
19
- spec.metadata['changelog_uri'] = 'https://github.com/ryz310/redis-objects-daily-counter/blob/master/CHANGELOG.md'
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
25
- end
26
- spec.bindir = 'exe'
27
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
- spec.require_paths = ['lib']
29
-
30
- spec.required_ruby_version = '>= 2.7.0'
31
-
32
- spec.add_dependency 'redis-objects'
33
-
34
- # For more information and examples about making a new gem, checkout our
35
- # guide at: https://bundler.io/guides/creating_gem.html
36
- end