whenever 0.10.0 → 0.11.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
- SHA1:
3
- metadata.gz: 9c8fe56b21ffa57026a2b944ae208bea62a9d7e9
4
- data.tar.gz: 543d704698ab03d944679daa1e85bee1b3936286
2
+ SHA256:
3
+ metadata.gz: be14a26bff8c588b4e5828582a552f4a10e056b08581f4d28b2f44ae6726c694
4
+ data.tar.gz: 6e8db042c4c070b52f85bf958b73673b2445663ca102ecb306ac4aa654e8cb37
5
5
  SHA512:
6
- metadata.gz: 3d0bd440a4beab5ecde93ccb91fad7cf5b2bf2ffe14a376ad24392fe5b4a3d53ba1d7ce15a53d2debc3b639a35f609436d21ab78de16b99a857fe1e16ed8bed1
7
- data.tar.gz: 4bb8692d2f7130e45d80fc05a6a54609fd160155014eae330da8f0fc9ed97e9338d523282cd4f8ec197531231493bd04d2409a3d7a6bbc57761ff6ad0ff7f422
6
+ metadata.gz: 30fc22be58c8cccdf2da369fd9103aedd5c4da0ac7abb6736abf166958c5d79f67029634a0ceb36aa0babcf66c41e092ae4a965b17b1459c2f22cc4c655e9abf
7
+ data.tar.gz: ebfb02153d52c3df836e50f3ef286ebdaefad889fded4d35664afbe70a46e6910842d96a83f8df6006adadc1b30c2b96f2d17deb3c7c8cf01cfab8999a991cc3
@@ -2,20 +2,47 @@ language: ruby
2
2
 
3
3
  before_install:
4
4
  - gem install bundler
5
-
5
+ - unset _JAVA_OPTIONS
6
6
  rvm:
7
7
  - 1.9.3
8
8
  - 2.0.0
9
9
  - 2.1.10
10
- - 2.2.6
11
- - 2.3.3
12
- - 2.4.0
10
+ - 2.2.10
11
+ - 2.3.8
12
+ - 2.4.5
13
+ - 2.5.3
13
14
  - jruby-9.1.9.0
15
+ matrix:
16
+ exclude:
17
+ # activesupport 5 only supports ruby 2.2.2 and later
18
+ - gemfile: gemfiles/activesupport5.0.gemfile
19
+ rvm: 1.9.3
20
+ - gemfile: gemfiles/activesupport5.1.gemfile
21
+ rvm: 1.9.3
22
+ - gemfile: gemfiles/activesupport5.2.gemfile
23
+ rvm: 1.9.3
24
+
25
+ - gemfile: gemfiles/activesupport5.0.gemfile
26
+ rvm: 2.0.0
27
+ - gemfile: gemfiles/activesupport5.1.gemfile
28
+ rvm: 2.0.0
29
+ - gemfile: gemfiles/activesupport5.2.gemfile
30
+ rvm: 2.0.0
31
+
32
+ - gemfile: gemfiles/activesupport5.0.gemfile
33
+ rvm: 2.1.10
34
+ - gemfile: gemfiles/activesupport5.1.gemfile
35
+ rvm: 2.1.10
36
+ - gemfile: gemfiles/activesupport5.2.gemfile
37
+ rvm: 2.1.10
14
38
 
15
39
  gemfile:
16
- - Gemfile
17
40
  - gemfiles/activesupport4.1.gemfile
18
41
  - gemfiles/activesupport4.2.gemfile
42
+ - gemfiles/activesupport5.0.gemfile
43
+ - gemfiles/activesupport5.1.gemfile
44
+ - gemfiles/activesupport5.2.gemfile
45
+
19
46
  env:
20
47
  global:
21
48
  - JRUBY_OPTS=--debug
@@ -0,0 +1,19 @@
1
+ appraise 'activesupport4.1' do
2
+ gem "activesupport", "~> 4.1.0"
3
+ end
4
+
5
+ appraise 'activesupport4.2' do
6
+ gem "activesupport", "~> 4.2.0"
7
+ end
8
+
9
+ appraise 'activesupport5.0' do
10
+ gem "activesupport", "~> 5.0.0"
11
+ end
12
+
13
+ appraise 'activesupport5.1' do
14
+ gem "activesupport", "~> 5.1.0"
15
+ end
16
+
17
+ appraise 'activesupport5.2' do
18
+ gem "activesupport", "~> 5.2.0beta2"
19
+ end
@@ -1,5 +1,15 @@
1
1
  ### develop
2
2
 
3
+ ### 0.11.0 / April 23, 2019
4
+
5
+ * Add support for mapping Range objects to cron range syntax [Tim Craft](https://github.com/javan/whenever/pull/725)
6
+
7
+ * Bugfix: Avoid modifying Capistrano `default_env` when setting the whenever environment. [ta1kt0me](https://github.com/javan/whenever/pull/728)
8
+
9
+ * Enable to execute whenever's task independently without setting :release_path or :whenever_path [ta1kt0me](https://github.com/javan/whenever/pull/729)
10
+
11
+ * Make error message clearer when parsing cron syntax fails due to a trailing space [ignisf](https://github.com/javan/whenever/pull/744)
12
+
3
13
  ### 0.10.0 / November 19, 2017
4
14
 
5
15
  * Modify wheneverize to allow for the creating of 'config' directory when not present
@@ -14,6 +24,8 @@
14
24
 
15
25
  * Allow configuring an alternative schedule file in Capistrano. [Shinichi Okamoto](https://github.com/javan/whenever/pull/666)
16
26
 
27
+ * Add customizing email recipient option with the MAILTO environment variable. [Chikahiro Tokoro](https://github.com/javan/whenever/pull/678)
28
+
17
29
  ### 0.9.7 / June 14, 2016
18
30
 
19
31
  * Restore compatibility with Capistrano v3; it has a bug which we have to work around [Ben Langfeld, Chris Gunther, Shohei Yamasaki]
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in whenever.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -9,7 +9,7 @@ $ gem install whenever
9
9
  Or with Bundler in your Gemfile.
10
10
 
11
11
  ```ruby
12
- gem 'whenever', :require => false
12
+ gem 'whenever', require: false
13
13
  ```
14
14
 
15
15
  ### Getting started
@@ -54,15 +54,19 @@ every 3.hours do # 1.minute 1.day 1.week 1.month 1.year is also supported
54
54
  command "/usr/bin/my_great_command"
55
55
  end
56
56
 
57
- every 1.day, :at => '4:30 am' do
57
+ every 1.day, at: '4:30 am' do
58
58
  runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
59
59
  end
60
60
 
61
+ every 1.day, at: ['4:30 am', '6:00 pm'] do
62
+ runner "Mymodel.task_to_run_in_two_times_every_day"
63
+ end
64
+
61
65
  every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
62
66
  runner "SomeModel.ladeeda"
63
67
  end
64
68
 
65
- every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday
69
+ every :sunday, at: '12pm' do # Use any day of the week or :weekend, :weekday
66
70
  runner "Task.do_something_great"
67
71
  end
68
72
 
@@ -72,7 +76,7 @@ end
72
76
 
73
77
  # run this task only on servers with the :app role in Capistrano
74
78
  # see Capistrano roles section below
75
- every :day, :at => '12:20am', :roles => [:app] do
79
+ every :day, at: '12:20am', roles: [:app] do
76
80
  rake "app_server:task"
77
81
  end
78
82
  ```
@@ -87,7 +91,7 @@ For example:
87
91
  job_type :awesome, '/usr/local/bin/awesome :task :fun_level'
88
92
 
89
93
  every 2.hours do
90
- awesome "party", :fun_level => "extreme"
94
+ awesome "party", fun_level: "extreme"
91
95
  end
92
96
  ```
93
97
 
@@ -129,10 +133,10 @@ You can set your custom Chronic configuration if the defaults don't fit you.
129
133
  For example, to assume a 24 hour clock instead of the default 12 hour clock:
130
134
 
131
135
  ```ruby
132
- set :chronic_options, :hours24 => true
136
+ set :chronic_options, hours24: true
133
137
 
134
138
  # By default this would run the job every day at 3am
135
- every 1.day, :at => '3:00' do
139
+ every 1.day, at: '3:00' do
136
140
  runner "MyModel.nightly_archive_job"
137
141
  end
138
142
  ```
@@ -240,7 +244,7 @@ When you define a job in your schedule.rb file, by default it will be deployed t
240
244
  all servers in the whenever_roles list (which defaults to `[:db]`).
241
245
 
242
246
  However, if you want to restrict certain jobs to only run on subset of servers,
243
- you can add a `:roles => [...]` argument to their definitions. **Make sure to add
247
+ you can add a `roles: [...]` argument to their definitions. **Make sure to add
244
248
  that role to the whenever_roles list in your deploy.rb.**
245
249
 
246
250
  When you run `cap deploy`, jobs with a :roles list specified will only be added to
@@ -253,7 +257,7 @@ So, for example, with the default whenever_roles of `[:db]`, a job like this wou
253
257
  deployed to all servers with the `:db` role:
254
258
 
255
259
  ```ruby
256
- every :day, :at => '12:20am' do
260
+ every :day, at: '12:20am' do
257
261
  rake 'foo:bar'
258
262
  end
259
263
  ```
@@ -262,15 +266,15 @@ If we set whenever_roles to `[:db, :app]` in deploy.rb, and have the following
262
266
  jobs in schedule.rb:
263
267
 
264
268
  ```ruby
265
- every :day, :at => '1:37pm', :roles => [:app] do
269
+ every :day, at: '1:37pm', roles: [:app] do
266
270
  rake 'app:task' # will only be added to crontabs of :app servers
267
271
  end
268
272
 
269
- every :hour, :roles => [:db] do
273
+ every :hour, roles: [:db] do
270
274
  rake 'db:task' # will only be added to crontabs of :db servers
271
275
  end
272
276
 
273
- every :day, :at => '12:02am' do
277
+ every :day, at: '12:02am' do
274
278
  command "run_this_everywhere" # will be deployed to :db and :app servers
275
279
  end
276
280
  ```
@@ -1,4 +1,6 @@
1
- source "https://rubygems.org"
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
2
4
 
3
5
  gem "activesupport", "~> 4.1.0"
4
6
 
@@ -1,4 +1,6 @@
1
- source "https://rubygems.org"
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
2
4
 
3
5
  gem "activesupport", "~> 4.2.0"
4
6
 
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activesupport", "~> 5.0.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activesupport", "~> 5.1.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activesupport", "~> 5.2.0beta2"
6
+
7
+ gemspec path: "../"
@@ -44,13 +44,13 @@ namespace :load do
44
44
  task :defaults do
45
45
  set :whenever_roles, ->{ :db }
46
46
  set :whenever_command, ->{ [:bundle, :exec, :whenever] }
47
- set :whenever_command_environment_variables, ->{ fetch(:default_env).merge!(rails_env: fetch(:whenever_environment)) }
47
+ set :whenever_command_environment_variables, ->{ fetch(:default_env).merge(rails_env: fetch(:whenever_environment)) }
48
48
  set :whenever_identifier, ->{ fetch :application }
49
49
  set :whenever_environment, ->{ fetch :rails_env, fetch(:stage, "production") }
50
50
  set :whenever_variables, ->{ "environment=#{fetch :whenever_environment}" }
51
51
  set :whenever_load_file, ->{ nil }
52
52
  set :whenever_update_flags, ->{ "--update-crontab #{fetch :whenever_identifier} --set #{fetch :whenever_variables}" }
53
53
  set :whenever_clear_flags, ->{ "--clear-crontab #{fetch :whenever_identifier}" }
54
- set :whenever_path, ->{ fetch :release_path }
54
+ set :whenever_path, ->{ release_path }
55
55
  end
56
56
  end
@@ -102,7 +102,7 @@ module Whenever
102
102
  exit(1)
103
103
  end
104
104
 
105
- # If an existing identier block is found, replace it with the new cron entries
105
+ # If an existing identifier block is found, replace it with the new cron entries
106
106
  if read_crontab =~ Regexp.new("^#{comment_open_regex}\s*$") && read_crontab =~ Regexp.new("^#{comment_close_regex}\s*$")
107
107
  # If the existing crontab file contains backslashes they get lost going through gsub.
108
108
  # .gsub('\\', '\\\\\\') preserves them. Go figure.
@@ -96,15 +96,13 @@ module Whenever
96
96
  timing[0] = comma_separated_timing(minute_frequency, 59, @at || 0)
97
97
  when Whenever.seconds(1, :hour)...Whenever.seconds(1, :day)
98
98
  hour_frequency = (@time / 60 / 60).round
99
- timing[0] = @at.is_a?(Time) ? @at.min : @at
99
+ timing[0] = @at.is_a?(Time) ? @at.min : range_or_integer(@at, 0..59, 'Minute')
100
100
  timing[1] = comma_separated_timing(hour_frequency, 23)
101
- raise ArgumentError, "Minute must be between 0-59, #{timing[0]} given" unless (0..59).include?(timing[0])
102
101
  when Whenever.seconds(1, :day)...Whenever.seconds(1, :month)
103
102
  day_frequency = (@time / 24 / 60 / 60).round
104
103
  timing[0] = @at.is_a?(Time) ? @at.min : 0
105
- timing[1] = @at.is_a?(Time) ? @at.hour : @at
104
+ timing[1] = @at.is_a?(Time) ? @at.hour : range_or_integer(@at, 0..23, 'Hour')
106
105
  timing[2] = comma_separated_timing(day_frequency, 31, 1)
107
- raise ArgumentError, "Hour must be between 0-23, #{timing[1]} given" unless (0..23).include?(timing[1])
108
106
  when Whenever.seconds(1, :month)...Whenever.seconds(1, :year)
109
107
  month_frequency = (@time / 30 / 24 / 60 / 60).round
110
108
  timing[0] = @at.is_a?(Time) ? @at.min : 0
@@ -112,10 +110,9 @@ module Whenever
112
110
  timing[2] = if @at.is_a?(Time)
113
111
  day_given? ? @at.day : 1
114
112
  else
115
- @at.zero? ? 1 : @at
113
+ @at == 0 ? 1 : range_or_integer(@at, 1..31, 'Day')
116
114
  end
117
115
  timing[3] = comma_separated_timing(month_frequency, 12, 1)
118
- raise ArgumentError, "Day must be between 1-31, #{timing[2]} given" unless (1..31).include?(timing[2])
119
116
  when Whenever.seconds(1, :year)
120
117
  timing[0] = @at.is_a?(Time) ? @at.min : 0
121
118
  timing[1] = @at.is_a?(Time) ? @at.hour : 0
@@ -127,9 +124,8 @@ module Whenever
127
124
  timing[3] = if @at.is_a?(Time)
128
125
  day_given? ? @at.month : 1
129
126
  else
130
- @at.zero? ? 1 : @at
127
+ @at == 0 ? 1 : range_or_integer(@at, 1..12, 'Month')
131
128
  end
132
- raise ArgumentError, "Month must be between 1-12, #{timing[3]} given" unless (1..12).include?(timing[3])
133
129
  else
134
130
  return parse_as_string
135
131
  end
@@ -151,7 +147,18 @@ module Whenever
151
147
  return (timing << i) * " " if string.downcase.index(day)
152
148
  end
153
149
 
154
- raise ArgumentError, "Couldn't parse: #{@time}"
150
+ raise ArgumentError, "Couldn't parse: #{@time.inspect}"
151
+ end
152
+
153
+ def range_or_integer(at, valid_range, name)
154
+ must_be_between = "#{name} must be between #{valid_range.min}-#{valid_range.max}"
155
+ if at.is_a?(Range)
156
+ raise ArgumentError, "#{must_be_between}, #{at.min} given" unless valid_range.include?(at.min)
157
+ raise ArgumentError, "#{must_be_between}, #{at.max} given" unless valid_range.include?(at.max)
158
+ return "#{at.min}-#{at.max}"
159
+ end
160
+ raise ArgumentError, "#{must_be_between}, #{at} given" unless valid_range.include?(at)
161
+ at
155
162
  end
156
163
 
157
164
  def comma_separated_timing(frequency, max, start = 0)
@@ -1,4 +1,4 @@
1
- class Numeric
1
+ Numeric.class_eval do
2
2
  def respond_to?(method, include_private = false)
3
3
  super || Whenever::NumericSeconds.public_method_defined?(method)
4
4
  end
@@ -1,3 +1,3 @@
1
1
  module Whenever
2
- VERSION = '0.10.0'
2
+ VERSION = '0.11.0'
3
3
  end
@@ -78,6 +78,10 @@ class CronParseHoursTest < Whenever::TestCase
78
78
  assert_minutes_equals "30", '6:30', :chronic_options => { :hours24 => false }
79
79
  end
80
80
 
81
+ should "parse correctly when given an 'at' with minutes as a Range" do
82
+ assert_minutes_equals "15-30", 15..30
83
+ end
84
+
81
85
  should "raise an exception when given an 'at' with an invalid minute value" do
82
86
  assert_raises ArgumentError do
83
87
  parse_time(Whenever.seconds(1, :hour), nil, 60)
@@ -86,6 +90,14 @@ class CronParseHoursTest < Whenever::TestCase
86
90
  assert_raises ArgumentError do
87
91
  parse_time(Whenever.seconds(1, :hour), nil, -1)
88
92
  end
93
+
94
+ assert_raises ArgumentError do
95
+ parse_time(Whenever.seconds(1, :hour), nil, 0..60)
96
+ end
97
+
98
+ assert_raises ArgumentError do
99
+ parse_time(Whenever.seconds(1, :hour), nil, -1..59)
100
+ end
89
101
  end
90
102
  end
91
103
 
@@ -130,6 +142,10 @@ class CronParseDaysTest < Whenever::TestCase
130
142
  assert_hours_and_minutes_equals %w(23 0), 23
131
143
  end
132
144
 
145
+ should "parse correctly when given an 'at' with hours as a Range" do
146
+ assert_hours_and_minutes_equals %w(3-23 0), 3..23
147
+ end
148
+
133
149
  should "raise an exception when given an 'at' with an invalid hour value" do
134
150
  assert_raises ArgumentError do
135
151
  parse_time(Whenever.seconds(1, :day), nil, 24)
@@ -138,6 +154,14 @@ class CronParseDaysTest < Whenever::TestCase
138
154
  assert_raises ArgumentError do
139
155
  parse_time(Whenever.seconds(1, :day), nil, -1)
140
156
  end
157
+
158
+ assert_raises ArgumentError do
159
+ parse_time(Whenever.seconds(1, :day), nil, 0..24)
160
+ end
161
+
162
+ assert_raises ArgumentError do
163
+ parse_time(Whenever.seconds(1, :day), nil, -1..23)
164
+ end
141
165
  end
142
166
  end
143
167
 
@@ -197,6 +221,10 @@ class CronParseMonthsTest < Whenever::TestCase
197
221
  assert_days_and_hours_and_minutes_equals %w(29 0 0), 29
198
222
  end
199
223
 
224
+ should "parse correctly when given an 'at' with days as a Range" do
225
+ assert_days_and_hours_and_minutes_equals %w(1-7 0 0), 1..7
226
+ end
227
+
200
228
  should "raise an exception when given an 'at' with an invalid day value" do
201
229
  assert_raises ArgumentError do
202
230
  parse_time(Whenever.seconds(1, :month), nil, 32)
@@ -205,6 +233,14 @@ class CronParseMonthsTest < Whenever::TestCase
205
233
  assert_raises ArgumentError do
206
234
  parse_time(Whenever.seconds(1, :month), nil, -1)
207
235
  end
236
+
237
+ assert_raises ArgumentError do
238
+ parse_time(Whenever.seconds(1, :month), nil, 0..30)
239
+ end
240
+
241
+ assert_raises ArgumentError do
242
+ parse_time(Whenever.seconds(1, :month), nil, 1..32)
243
+ end
208
244
  end
209
245
  end
210
246
 
@@ -254,6 +290,10 @@ class CronParseYearTest < Whenever::TestCase
254
290
  assert_months_and_days_and_hours_and_minutes_equals %w(12 1 0 0), 12
255
291
  end
256
292
 
293
+ should "parse correctly when given an 'at' with month as a Range" do
294
+ assert_months_and_days_and_hours_and_minutes_equals %w(1-3 1 0 0), 1..3
295
+ end
296
+
257
297
  should "raise an exception when given an 'at' with an invalid month value" do
258
298
  assert_raises ArgumentError do
259
299
  parse_time(Whenever.seconds(1, :year), nil, 13)
@@ -262,6 +302,14 @@ class CronParseYearTest < Whenever::TestCase
262
302
  assert_raises ArgumentError do
263
303
  parse_time(Whenever.seconds(1, :year), nil, -1)
264
304
  end
305
+
306
+ assert_raises ArgumentError do
307
+ parse_time(Whenever.seconds(1, :year), nil, 0..12)
308
+ end
309
+
310
+ assert_raises ArgumentError do
311
+ parse_time(Whenever.seconds(1, :year), nil, 1..13)
312
+ end
265
313
  end
266
314
  end
267
315
 
@@ -24,4 +24,5 @@ Gem::Specification.new do |s|
24
24
  s.add_development_dependency "rake"
25
25
  s.add_development_dependency "mocha", ">= 0.9.5"
26
26
  s.add_development_dependency "minitest"
27
+ s.add_development_dependency "appraisal"
27
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whenever
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javan Makhmali
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-20 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: appraisal
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  description: Clean ruby syntax for writing and deploying cron jobs.
84
98
  email:
85
99
  - javan@javan.us
@@ -91,6 +105,7 @@ extra_rdoc_files: []
91
105
  files:
92
106
  - ".gitignore"
93
107
  - ".travis.yml"
108
+ - Appraisals
94
109
  - CHANGELOG.md
95
110
  - Gemfile
96
111
  - LICENSE
@@ -100,6 +115,9 @@ files:
100
115
  - bin/wheneverize
101
116
  - gemfiles/activesupport4.1.gemfile
102
117
  - gemfiles/activesupport4.2.gemfile
118
+ - gemfiles/activesupport5.0.gemfile
119
+ - gemfiles/activesupport5.1.gemfile
120
+ - gemfiles/activesupport5.2.gemfile
103
121
  - lib/whenever.rb
104
122
  - lib/whenever/capistrano.rb
105
123
  - lib/whenever/capistrano/v2/hooks.rb
@@ -151,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
169
  version: '0'
152
170
  requirements: []
153
171
  rubyforge_project:
154
- rubygems_version: 2.5.1
172
+ rubygems_version: 2.7.3
155
173
  signing_key:
156
174
  specification_version: 4
157
175
  summary: Cron jobs in ruby.