cronitor 2.0.0 → 3.0.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: 67371ddbb668fc2c736994aadb6b1610bd807aa4
4
- data.tar.gz: 22381ccb4ee4157fe32c3d518642976aa58a63d9
2
+ SHA256:
3
+ metadata.gz: 1f6ea3528a80a4d2cb84314c86bb5f55431706aa46c9a5ca787860e8823f7bbd
4
+ data.tar.gz: 3467ef223aafddbab324b924fdc5552922f12310f959d32b7137eedf2ea42b98
5
5
  SHA512:
6
- metadata.gz: fde7ed9489dd3b82435766ed0013dcef88fb2fe7f67ecca2e3cd7d954c3fff2c164df8e5af2a9b59343b5587c5d287df4a229968d1b4d306ea916605b81a0329
7
- data.tar.gz: 0e342c25712223f1b1f8e67c11b606bf75369a494c00f0bd3aacb6bc0c87272b8b6b44f5b2e0f81d5613779eabdaf95289716a0e2d639f20ba2e0453c252cad3
6
+ metadata.gz: a54a8268d276563c0c90cc6101ccf7db4e6aa725568b08bd7581c4d7c745fee78e5245ad51e4ac3d752370048bf09151b315f5eb3c829c345f1c81e9e1ff8fbf
7
+ data.tar.gz: 8db8d9075d2daf231b54dbc2d0276448e5e39e07e0a9996ff8d8087e65f20971e105344d75f4b36812fd8a549d0f477a9dc78fd6231234f4cb932f5f182d76ed
@@ -0,0 +1,15 @@
1
+ ---
2
+ Metrics/AbcSize:
3
+ Enabled: false
4
+
5
+ Metrics/BlockLength:
6
+ Enabled: false
7
+
8
+ Metrics/CyclomaticComplexity:
9
+ Enabled: false
10
+
11
+ Metrics/MethodLength:
12
+ Enabled: false
13
+
14
+ Style/Documentation:
15
+ Enabled: false
@@ -1,3 +1,5 @@
1
+ ---
1
2
  language: ruby
2
3
  rvm:
4
+ - 2
3
5
  - 2.4
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in cronitor.gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Cronitor
2
2
 
3
- [![Travis](https://img.shields.io/travis/evertrue/cronitor.svg)](https://github.com/evertrue/cronitor)
3
+ [![Travis](https://img.shields.io/travis/evertrue/cronitor.svg)](https://travis-ci.org/evertrue/cronitor)
4
4
  [![Gem Version](https://badge.fury.io/rb/cronitor.svg)](https://badge.fury.io/rb/cronitor)
5
5
 
6
6
  [Cronitor](https://cronitor.io/) is a service for heartbeat-style monitoring of just about anything that can send an HTTP request.
@@ -29,11 +29,16 @@ Or install it yourself as:
29
29
 
30
30
  A Cronitor monitor (hereafter referred to only as a monitor for brevity) is created if it does not already exist, and its ID returned.
31
31
 
32
+ Please see the [Cronitor Monitor API docs](https://cronitor.io/docs/monitor-api) for details of all the possible monitor options.
33
+
34
+ Example of creating a heartbeat monitor:
35
+
32
36
  ```ruby
33
37
  require 'cronitor'
34
38
 
35
39
  monitor_options = {
36
40
  name: 'My Fancy Monitor',
41
+ type: 'heartbeat', # Optional: the gem defaults to this; the other value, 'healthcheck', is not yet supported by this gem
37
42
  notifications: {
38
43
  emails: ['test@example.com'],
39
44
  slack: [],
@@ -43,29 +48,21 @@ monitor_options = {
43
48
  },
44
49
  rules: [
45
50
  {
46
- rule_type: 'not_run_in',
47
- duration: 5
48
- rime_unit: 'seconds'
51
+ rule_type: 'run_ping_not_received',
52
+ value: 5,
53
+ time_unit: 'seconds'
49
54
  }
50
55
  ],
51
56
  note: 'A human-friendly description of this monitor'
52
57
  }
58
+
59
+ # The token parameter is optional; if omittted, ENV['CRONITOR_TOKEN'] will be used
53
60
  my_monitor = Cronitor.new token: 'api_token', opts: monitor_options
54
61
  ```
55
62
 
56
- You may optionally specify a `:human_readable` value for your rule(s), otherwise one will be crafted for you:
63
+ ### Updating an existing monitor
57
64
 
58
- ```ruby
59
- monitor_options = {
60
- rules: [
61
- {
62
- rule_type: 'not_run_in',
63
- duration: 5
64
- time_unit: 'seconds',
65
- human_readable: 'not_run_in 5 seconds'
66
- }
67
- ],
68
- ```
65
+ Currently this gem does not support updating or deleting an existing monitor.
69
66
 
70
67
  ### Pinging a Monitor
71
68
 
@@ -79,7 +76,9 @@ my_monitor.ping 'fail', 'A short description of the failure'
79
76
 
80
77
  ### Pinging a monitor when you have a Cronitor code
81
78
 
82
- You may already have the code for a monitor, in which case, the expense of `Cronitor.new` may seem unnecessary (since it makes an HTTP request to check if a monitor exists, and you already know it does).
79
+ You may already have the code for a monitor, in which case, the expense of `Cronitor.create` may seem unnecessary (since it makes an HTTP request to check if a monitor exists, and you already know it does).
80
+
81
+ Cronitor does not require a token for pinging a monitor unless you have enabled Ping API authentication in your account settings. At the moment, this gem does not support Ping API auth.
83
82
 
84
83
  In that case:
85
84
 
@@ -102,3 +101,10 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
102
101
  3. Commit your changes (`git commit -am 'Add some feature'`)
103
102
  4. Push to the branch (`git push origin my-new-feature`)
104
103
  5. Create a new Pull Request
104
+
105
+ ## Release a new version
106
+
107
+ The `bump` gem makes this easy:
108
+
109
+ 1. `rake bump:(major|minor|patch|pre)`
110
+ 2. `rake release`
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'bump/tasks'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'cronitor'
@@ -1,4 +1,6 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'cronitor/version'
4
6
 
@@ -18,11 +20,11 @@ Gem::Specification.new do |spec|
18
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
21
  spec.require_paths = ['lib']
20
22
 
21
- spec.add_development_dependency 'bundler', '~> 1.10'
22
- spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'rspec', '~> 3.3'
23
+ spec.add_development_dependency 'bump', '~> 0.1'
24
+ spec.add_development_dependency 'bundler'
24
25
  spec.add_development_dependency 'pry', '~> 0.10'
25
- spec.add_development_dependency 'webmock', '~> 3.1'
26
+ spec.add_development_dependency 'rake'
27
+ spec.add_development_dependency 'rspec', '~> 3.3'
26
28
  spec.add_development_dependency 'sinatra', '~> 2.0'
27
- spec.add_development_dependency 'bump', '~> 0.1'
29
+ spec.add_development_dependency 'webmock', '~> 3.1'
28
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cronitor/version'
2
4
  require 'cronitor/error'
3
5
  require 'json'
@@ -6,8 +8,8 @@ require 'uri'
6
8
 
7
9
  class Cronitor
8
10
  attr_accessor :token, :opts, :code
9
- API_URL = 'https://cronitor.io/v1'.freeze
10
- PING_URL = 'https://cronitor.link'.freeze
11
+ API_URL = 'https://cronitor.io/v3'
12
+ PING_URL = 'https://cronitor.link'
11
13
 
12
14
  def initialize(token: ENV['CRONITOR_TOKEN'], opts: {}, code: nil)
13
15
  @token = token
@@ -24,8 +26,14 @@ class Cronitor
24
26
 
25
27
  if @opts
26
28
  @opts = symbolize_keys @opts
29
+
27
30
  exists? @opts[:name] if @opts.key? :name
28
- human_readable @opts[:rules] if @opts.key? :rules
31
+
32
+ # README: Per Cronitor API v2, we need to specify a type. The "heartbeat"
33
+ # type corresponds to what the v1 API offered by default
34
+ # We allow other values to be injected, and let the API handle
35
+ # any errors.
36
+ @opts[:type] = 'heartbeat' unless @opts[:type]
29
37
  end
30
38
 
31
39
  create if @code.nil?
@@ -61,6 +69,7 @@ class Cronitor
61
69
  return false unless response.is_a? Net::HTTPSuccess
62
70
 
63
71
  @code = JSON.parse(response.body).fetch 'code'
72
+ @opts = JSON.parse(response.body)
64
73
 
65
74
  true
66
75
  end
@@ -81,15 +90,6 @@ class Cronitor
81
90
  valid? response
82
91
  end
83
92
 
84
- def human_readable(rules)
85
- rules.each do |rule|
86
- unless rule[:human_readable]
87
- rule[:human_readable] = "#{rule[:rule_type]} #{rule[:duration]} " \
88
- "#{rule[:time_unit]}"
89
- end
90
- end
91
- end
92
-
93
93
  private
94
94
 
95
95
  def valid?(response)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Cronitor
2
4
  class Error < StandardError
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Cronitor
2
- VERSION = '2.0.0'.freeze
4
+ VERSION = '3.0.0'
3
5
  end
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cronitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Byrnes
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-30 00:00:00.000000000 Z
11
+ date: 2020-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: bump
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '0.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '0.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.3'
47
+ version: '0.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.3'
54
+ version: '0.10'
55
55
  - !ruby/object:Gem::Dependency
56
- name: pry
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0.10'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0.10'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: webmock
70
+ name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.1'
75
+ version: '3.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.1'
82
+ version: '3.3'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sinatra
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -95,19 +95,19 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: bump
98
+ name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.1'
103
+ version: '3.1'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.1'
110
+ version: '3.1'
111
111
  description:
112
112
  email:
113
113
  - thejeffbyrnes@gmail.com
@@ -118,6 +118,7 @@ files:
118
118
  - ".editorconfig"
119
119
  - ".gitignore"
120
120
  - ".rspec"
121
+ - ".rubocop.yml"
121
122
  - ".travis.yml"
122
123
  - Gemfile
123
124
  - LICENSE.txt
@@ -147,8 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
148
  - !ruby/object:Gem::Version
148
149
  version: '0'
149
150
  requirements: []
150
- rubyforge_project:
151
- rubygems_version: 2.6.13
151
+ rubygems_version: 3.1.2
152
152
  signing_key:
153
153
  specification_version: 4
154
154
  summary: An interface for the Cronitor API