arask 1.2.4 → 1.2.6
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 +4 -4
- data/README.md +24 -3
- data/lib/arask/arask_job.rb +5 -2
- data/lib/arask/railtie.rb +1 -1
- data/lib/arask/setup.rb +1 -1
- data/lib/arask/version.rb +1 -1
- data/lib/arask.rb +16 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5741a13f8ff63776fec7bd2f2649d1278c31c0de6d5d336620c0afcfdfb5ddc8
|
4
|
+
data.tar.gz: af24a1563a8d90c8ad40cfc09faefce64f30613c53b9ef67ed997478470fc1a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2f45626df424803702bbfba1d53f2b390e8804e569e81092532ce573e332b2d6c95b3f0e6712f54427a8886cb950860568039238b9a1b3855ad9860ad1bc125
|
7
|
+
data.tar.gz: cacc24002657be607cbffd982bea58d3593d8c6e92e81cccb54cdd2a7b69a9940de5340fc7a8399597dedf2169a92c90f2c1e10a3792a8dd25693d90c64e8066
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Arask
|
2
|
+
|
2
3
|
[](https://badge.fury.io/rb/arask)
|
3
|
-
[](https://travis-ci.org/Ebbe/arask)
|
4
4
|
[](https://coveralls.io/github/Ebbe/arask?branch=master)
|
5
5
|
|
6
6
|
Automatic RAils taSKs (with minimal setup).
|
@@ -10,12 +10,15 @@ No need to setup anything outside of Rails. If Rails is running, so is Arask. If
|
|
10
10
|
Use cron syntax or simply define the interval.
|
11
11
|
|
12
12
|
## Installation
|
13
|
+
|
13
14
|
Add this line to your application's Gemfile:
|
15
|
+
|
14
16
|
```ruby
|
15
17
|
gem 'arask'
|
16
18
|
```
|
17
19
|
|
18
20
|
Execute:
|
21
|
+
|
19
22
|
```bash
|
20
23
|
$ bundle install
|
21
24
|
$ rails generate arask:install
|
@@ -25,9 +28,11 @@ $ rails db:migrate
|
|
25
28
|
Setup your tasks in config/initializers/arask.rb. Initially it looks [like this](lib/arask/initialize.rb).
|
26
29
|
|
27
30
|
## Usage
|
31
|
+
|
28
32
|
After installation, you can edit config/initializers/arask.rb with your tasks.
|
29
33
|
|
30
34
|
### Examples of jobs in the initializer
|
35
|
+
|
31
36
|
```ruby
|
32
37
|
# Rake tasks with cron syntax
|
33
38
|
arask.create task: 'send:logs', cron: '0 2 * * *' # At 02:00 every day
|
@@ -57,16 +62,20 @@ end
|
|
57
62
|
```
|
58
63
|
|
59
64
|
### About cron
|
65
|
+
|
60
66
|
Arask uses [fugit](https://github.com/floraison/fugit) to parse cron and get next execution time. It follows normal cron syntax. You can test your cron at https://crontab.guru/.
|
61
67
|
|
62
68
|
Not supported is `@reboot`.
|
63
69
|
|
64
70
|
### About interval
|
71
|
+
|
65
72
|
The interval starts when the task has started running. If a task with the interval `:hourly` is run at 08:37PM, then it will run the next time at 09:37PM.
|
66
73
|
|
67
74
|
## Todos
|
68
|
-
|
69
|
-
|
75
|
+
|
76
|
+
- Have a "try again" feature. For instance `arask.create script: 'raise "I failed"', interval: :daily, fail_retry: 5.minutes, retry_at_most: 2`
|
77
|
+
- Be able to specify line and number that failed for an exception:
|
78
|
+
|
70
79
|
```ruby
|
71
80
|
file,line,_ = caller.first.split(':')
|
72
81
|
fileline = File.readlines(file)[line.to_i - 1].strip
|
@@ -75,16 +84,28 @@ fileline = File.readlines(file)[line.to_i - 1].strip
|
|
75
84
|
## Special environments
|
76
85
|
|
77
86
|
### Heroku
|
87
|
+
|
78
88
|
Nothing special to setup. But if you use a hobby dyno and it falls to sleep, so will Arask. As soon as the dyno wakes up, Arask will run any pending jobs.
|
79
89
|
|
80
90
|
### Docker
|
91
|
+
|
81
92
|
Nothing special to setup.
|
82
93
|
|
83
94
|
## Caveats
|
95
|
+
|
84
96
|
If you reload a database dump, your jobs could be run again.
|
85
97
|
|
86
98
|
## Contributing
|
99
|
+
|
87
100
|
Please use https://github.com/Ebbe/arask
|
88
101
|
|
102
|
+
## Running tests
|
103
|
+
|
104
|
+
```bash
|
105
|
+
$ bundle install
|
106
|
+
$ bundle exec rake test
|
107
|
+
```
|
108
|
+
|
89
109
|
## License
|
110
|
+
|
90
111
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/lib/arask/arask_job.rb
CHANGED
@@ -8,9 +8,12 @@ module Arask
|
|
8
8
|
calculate_new_execute_at
|
9
9
|
begin
|
10
10
|
if self.job.start_with?('Rake::Task')
|
11
|
-
Rake.load_rakefile Rails.root.join(
|
11
|
+
Rake.load_rakefile Rails.root.join('Rakefile') unless Rake::Task.task_defined?(self.job[12..-3])
|
12
|
+
eval(self.job + '.invoke')
|
13
|
+
eval(self.job + '.reenable')
|
14
|
+
else
|
15
|
+
eval(self.job)
|
12
16
|
end
|
13
|
-
eval(self.job)
|
14
17
|
rescue Exception => e
|
15
18
|
puts 'Arask: Job failed'
|
16
19
|
p self
|
data/lib/arask/railtie.rb
CHANGED
data/lib/arask/setup.rb
CHANGED
data/lib/arask/version.rb
CHANGED
data/lib/arask.rb
CHANGED
@@ -9,10 +9,22 @@ module Arask
|
|
9
9
|
|
10
10
|
def self.setup(force_run = false, &block)
|
11
11
|
Arask.jobs_block = block
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
if Rails::VERSION::MAJOR>=6
|
13
|
+
# Make sure we only run setup now if we are testing.
|
14
|
+
# Else we would run them at every cli execution.
|
15
|
+
# railtie.rb inits the jobs when the server is ready
|
16
|
+
Arask.init_jobs if force_run
|
17
|
+
else # Rails is less than 6
|
18
|
+
|
19
|
+
# Make sure we only run setup if Rails is actually run as a server or testing.
|
20
|
+
return unless defined?(Rails::Server) or force_run
|
21
|
+
# If we don't wait and rails is setup to use another language, ActiveJob
|
22
|
+
# saves what is now (usually :en) and reloads that when trying to run the
|
23
|
+
# job. Renderering an I18n error of unsupported language.
|
24
|
+
ActiveSupport.on_load :after_initialize, yield: true do
|
25
|
+
Arask.init_jobs
|
26
|
+
end
|
27
|
+
end
|
16
28
|
end
|
17
29
|
|
18
30
|
def self.init_jobs
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arask
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esben Damgaard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
requirements: []
|
93
|
-
rubygems_version: 3.
|
93
|
+
rubygems_version: 3.3.26
|
94
94
|
signing_key:
|
95
95
|
specification_version: 4
|
96
96
|
summary: Automatic RAils taSKs (with minimal setup)
|