whenever 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +32 -5
- data/Appraisals +19 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +1 -1
- data/README.md +16 -12
- data/gemfiles/activesupport4.1.gemfile +3 -1
- data/gemfiles/activesupport4.2.gemfile +3 -1
- data/gemfiles/activesupport5.0.gemfile +7 -0
- data/gemfiles/activesupport5.1.gemfile +7 -0
- data/gemfiles/activesupport5.2.gemfile +7 -0
- data/lib/whenever/capistrano/v3/tasks/whenever.rake +2 -2
- data/lib/whenever/command_line.rb +1 -1
- data/lib/whenever/cron.rb +16 -9
- data/lib/whenever/numeric.rb +1 -1
- data/lib/whenever/version.rb +1 -1
- data/test/unit/cron_test.rb +48 -0
- data/whenever.gemspec +1 -0
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: be14a26bff8c588b4e5828582a552f4a10e056b08581f4d28b2f44ae6726c694
|
4
|
+
data.tar.gz: 6e8db042c4c070b52f85bf958b73673b2445663ca102ecb306ac4aa654e8cb37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30fc22be58c8cccdf2da369fd9103aedd5c4da0ac7abb6736abf166958c5d79f67029634a0ceb36aa0babcf66c41e092ae4a965b17b1459c2f22cc4c655e9abf
|
7
|
+
data.tar.gz: ebfb02153d52c3df836e50f3ef286ebdaefad889fded4d35664afbe70a46e6910842d96a83f8df6006adadc1b30c2b96f2d17deb3c7c8cf01cfab8999a991cc3
|
data/.travis.yml
CHANGED
@@ -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.
|
11
|
-
- 2.3.
|
12
|
-
- 2.4.
|
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
|
data/Appraisals
ADDED
@@ -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
|
data/CHANGELOG.md
CHANGED
@@ -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
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', :
|
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, :
|
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, :
|
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, :
|
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", :
|
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, :
|
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, :
|
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
|
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, :
|
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, :
|
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, :
|
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, :
|
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
|
```
|
@@ -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
|
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, ->{
|
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
|
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.
|
data/lib/whenever/cron.rb
CHANGED
@@ -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
|
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
|
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)
|
data/lib/whenever/numeric.rb
CHANGED
data/lib/whenever/version.rb
CHANGED
data/test/unit/cron_test.rb
CHANGED
@@ -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
|
|
data/whenever.gemspec
CHANGED
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.
|
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:
|
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.
|
172
|
+
rubygems_version: 2.7.3
|
155
173
|
signing_key:
|
156
174
|
specification_version: 4
|
157
175
|
summary: Cron jobs in ruby.
|