status_cat 0.1.0 → 0.1.1
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 +26 -20
- data/lib/status_cat/checkers/delayed_job.rb +2 -2
- data/lib/status_cat/checkers/fitbit.rb +20 -0
- data/lib/status_cat/checkers/profilesio.rb +13 -0
- data/lib/status_cat/checkers/send_hub.rb +13 -0
- data/lib/status_cat/checkers/twilio.rb +13 -0
- data/lib/status_cat/status.rb +1 -1
- data/lib/status_cat/version.rb +1 -1
- data/lib/status_cat.rb +4 -0
- data/spec/controllers/status_cat/status_controller_spec.rb +8 -10
- data/spec/coverage_spec.rb +1 -3
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -1232
- data/spec/dummy/log/test.log +12344 -6383
- data/spec/helpers/status_cat/status_helper_spec.rb +17 -28
- data/spec/lib/status_cat/checkers/action_mailer_spec.rb +9 -15
- data/spec/lib/status_cat/checkers/active_record_spec.rb +5 -11
- data/spec/lib/status_cat/checkers/base_spec.rb +9 -16
- data/spec/lib/status_cat/checkers/delayed_job_spec.rb +4 -10
- data/spec/lib/status_cat/checkers/fitbit_spec.rb +33 -0
- data/spec/lib/status_cat/checkers/profilesio_spec.rb +38 -0
- data/spec/lib/status_cat/checkers/s3_spec.rb +1 -3
- data/spec/lib/status_cat/checkers/send_hub_spec.rb +33 -0
- data/spec/lib/status_cat/checkers/stripe_spec.rb +1 -3
- data/spec/lib/status_cat/checkers/twilio_spec.rb +33 -0
- data/spec/lib/status_cat/config_spec.rb +36 -29
- data/spec/lib/status_cat/engine_spec.rb +1 -4
- data/spec/lib/status_cat/status_spec.rb +19 -27
- data/spec/lib/status_cat/version_spec.rb +3 -6
- data/spec/lib/status_cat_spec.rb +2 -7
- data/spec/lib/tasks/status_cat.rake_spec.rb +2 -7
- data/spec/mailers/status_cat/status_mailer_spec.rb +9 -13
- data/spec/spec_helper.rb +21 -1
- data/spec/support/shared/checker.rb +4 -6
- data/spec/views/status_cat/status/index.html.erb_spec.rb +3 -5
- data/spec/views/status_cat/status_mailer/failure.html.erb_spec.rb +1 -3
- data/spec/views/status_cat/status_mailer/failure.text.erb_spec.rb +1 -4
- metadata +107 -41
- data/spec/data/report.txt +0 -10
- data/spec/data/report.txt.tmp +0 -10
- data/spec/data/status_report_format.txt +0 -1
- data/spec/data/status_report_format.txt.tmp +0 -1
- data/spec/dummy/config/passwords.yml +0 -5
- data/spec/dummy/db/production.sqlite3 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/0891c389c9f47b48b695b65602d93a57 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/400d7aa6ca317151fe36fc9f02ccfc4e +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/40da66d7323888023264d2f06b7525d4 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4bddf542ba5114155847240380cf6e7c +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/572759e0267736e8961ff1fad85cfe47 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6cec2a8a17b78e61daecff44044e1179 +0 -0
- data/spec/dummy/tmp/pids/server.pid +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ac65c223e10fd528530d66c77a8c4faa08c766f
|
4
|
+
data.tar.gz: 1140f72ea64a6300ccff6d24587f911d98ea13f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54b688cdeb93d39a70dd877ec14adeebb209ebed46e6f20bc5cbdcdaa3bfb437afb02e7da42cfd64107c62d1632f3978a4c0a2dba28d02bc7f28ad71cab5c93e
|
7
|
+
data.tar.gz: 1be6f957bfb9bf1bbb707920c501c89230ef0e15e105b53a396a21483522de10a7b61307508a87c065d9b90780bb10f4323df9988326adbe9bb6f919c3571d8f
|
data/README.md
CHANGED
@@ -17,6 +17,10 @@ such as:
|
|
17
17
|
* AWS S3
|
18
18
|
* Delayed Job
|
19
19
|
* Stripe
|
20
|
+
* Fitbit
|
21
|
+
* Profiles.io
|
22
|
+
* SendHub
|
23
|
+
* Twilio
|
20
24
|
|
21
25
|
## Getting Started
|
22
26
|
|
@@ -40,21 +44,22 @@ such as:
|
|
40
44
|
|
41
45
|
Status.configure do |config|
|
42
46
|
|
43
|
-
|
44
|
-
|
45
|
-
|
47
|
+
config.authenticate_with do
|
48
|
+
authenticate!
|
49
|
+
end
|
46
50
|
|
47
|
-
|
48
|
-
|
49
|
-
|
51
|
+
config.authorize_with do
|
52
|
+
authorize!
|
53
|
+
end
|
50
54
|
|
51
|
-
|
55
|
+
config.layout = 'admin'
|
52
56
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
+
config.noreply = 'noreply@schrodingersbox.com'
|
58
|
+
config.to = 'ops@schrodingersbox.com'
|
59
|
+
config.from = 'ops@schrodingersbox.com'
|
60
|
+
config.subject = "#{Rails.env.upcase} StatusCat Failure"
|
57
61
|
|
62
|
+
config.enabled = [ :action_mailer, :active_record ]
|
58
63
|
end
|
59
64
|
|
60
65
|
## How To
|
@@ -150,17 +155,18 @@ Create or add to `config/initializers/status_cat.rb`
|
|
150
155
|
|
151
156
|
## History
|
152
157
|
|
153
|
-
Version 0.0.2 = Rails 3 compatible
|
154
|
-
Version 0.0.3 = Rails 4 compatible
|
158
|
+
* Version 0.0.2 = Rails 3 compatible
|
159
|
+
* Version 0.0.3 = Rails 4 compatible
|
155
160
|
|
156
161
|
## TODO
|
157
162
|
|
158
|
-
* Add disk space checker with externally configurable limit
|
159
|
-
* Add Zencoder checker?
|
160
|
-
* Add NewRelic checker?
|
163
|
+
* Add disk space checker with externally configurable limit
|
164
|
+
* Add Zencoder checker?
|
165
|
+
* Add NewRelic checker?
|
161
166
|
|
162
|
-
* Dynamically create rake tasks for each checker
|
167
|
+
* Dynamically create rake tasks for each checker
|
163
168
|
|
164
|
-
* Doc
|
165
|
-
|
166
|
-
|
169
|
+
* Doc
|
170
|
+
* General checker concept
|
171
|
+
* Shared spec
|
172
|
+
* Env vars to configure services
|
@@ -9,12 +9,12 @@ module StatusCat
|
|
9
9
|
@status = 'delayed_job gem not installed'
|
10
10
|
else
|
11
11
|
@status = fail_on_exception do
|
12
|
-
sql = 'select count(*) from delayed_jobs'
|
12
|
+
sql = 'select count(*) from delayed_jobs where failed_at is null'
|
13
13
|
result = ::ActiveRecord::Base.connection.execute( sql ).first
|
14
14
|
@value = result.is_a?( Hash ) ? result[ 'count' ] : result[ 0 ]
|
15
15
|
|
16
16
|
expires = 1.day.ago
|
17
|
-
sql = "select count(*) from delayed_jobs where created_at < '#{expires.to_s( :db )}'"
|
17
|
+
sql = "select count(*) from delayed_jobs where created_at < '#{expires.to_s( :db )}' and failed_at is null"
|
18
18
|
result = ::ActiveRecord::Base.connection.execute( sql ).first
|
19
19
|
value = result.is_a?( Hash ) ? result[ 'count' ] : result[ 0 ]
|
20
20
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module StatusCat
|
2
|
+
module Checkers
|
3
|
+
class Fitbit < Base
|
4
|
+
def initialize
|
5
|
+
@value = ENV[ 'FITBIT_CONSUMER_KEY' ]
|
6
|
+
@status = fail_on_exception do
|
7
|
+
user_info = ::Fitgem::Client.new(
|
8
|
+
:consumer_key => ENV[ 'FITBIT_CONSUMER_KEY' ],
|
9
|
+
:consumer_secret => ENV[ 'FITBIT_CONSUMER_SECRET' ],
|
10
|
+
:token => ENV[ 'FITBIT_TEST_TOKEN' ],
|
11
|
+
:secret => ENV[ 'FITBIT_TEST_SECRET' ],
|
12
|
+
:user_id => ENV[ 'FITBIT_TEST_USER_ID' ]
|
13
|
+
).user_info
|
14
|
+
|
15
|
+
user_info[ 'errors' ] ? user_info.inspect : nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module StatusCat
|
2
|
+
module Checkers
|
3
|
+
class Profilesio < Base
|
4
|
+
def initialize
|
5
|
+
@value = ENV['PROFILESIO_KEY']
|
6
|
+
@status = fail_on_exception do
|
7
|
+
response = ::HTTParty.get('https://profiles.io/record/register')
|
8
|
+
response.code == 200 ? nil : 'fail'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module StatusCat
|
2
|
+
module Checkers
|
3
|
+
class SendHub < Base
|
4
|
+
def initialize
|
5
|
+
@value = ENV[ 'SEND_HUB_NUMBER' ]
|
6
|
+
@status = fail_on_exception do
|
7
|
+
send_hub = ::SendHub.new( ENV[ 'SEND_HUB_API_KEY' ], ENV[ 'SEND_HUB_NUMBER' ] )
|
8
|
+
send_hub.get_contacts ? nil : 'fail'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module StatusCat
|
2
|
+
module Checkers
|
3
|
+
class Twilio < Base
|
4
|
+
def initialize
|
5
|
+
@value = ENV[ 'TWILIO_SID' ]
|
6
|
+
@status = fail_on_exception do
|
7
|
+
twilio = ::Twilio::REST::Client.new( ENV[ 'TWILIO_SID' ], ENV[ 'TWILIO_TOKEN' ] )
|
8
|
+
twilio.account.messages.total ? nil : 'fail'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/status_cat/status.rb
CHANGED
@@ -19,7 +19,7 @@ module StatusCat
|
|
19
19
|
# Emails ::failed list if it is not empty
|
20
20
|
def self.cron
|
21
21
|
checkers = self.failed
|
22
|
-
StatusCat::StatusMailer.failure( checkers ).
|
22
|
+
StatusCat::StatusMailer.failure( checkers ).deliver_now unless checkers.empty?
|
23
23
|
end
|
24
24
|
|
25
25
|
# Constructs a checker instance given it's name
|
data/lib/status_cat/version.rb
CHANGED
data/lib/status_cat.rb
CHANGED
@@ -6,8 +6,12 @@ require 'status_cat/checkers/base'
|
|
6
6
|
require 'status_cat/checkers/action_mailer'
|
7
7
|
require 'status_cat/checkers/active_record'
|
8
8
|
require 'status_cat/checkers/delayed_job'
|
9
|
+
require 'status_cat/checkers/fitbit'
|
10
|
+
require 'status_cat/checkers/profilesio'
|
9
11
|
require 'status_cat/checkers/s3'
|
12
|
+
require 'status_cat/checkers/send_hub'
|
10
13
|
require 'status_cat/checkers/stripe'
|
14
|
+
require 'status_cat/checkers/twilio'
|
11
15
|
|
12
16
|
module StatusCat
|
13
17
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe StatusCat::StatusController do
|
4
2
|
|
5
3
|
routes { StatusCat::Engine.routes }
|
@@ -8,21 +6,23 @@ describe StatusCat::StatusController do
|
|
8
6
|
|
9
7
|
it 'gets successfully' do
|
10
8
|
get :index
|
11
|
-
response.
|
9
|
+
expect( response ).to be_success
|
12
10
|
end
|
13
11
|
|
14
12
|
it 'assigns @checkers to StatusCat::Status.all' do
|
15
13
|
get :index
|
16
14
|
|
17
15
|
@checkers = assigns[ :checkers ]
|
18
|
-
@checkers.
|
19
|
-
@checkers.length.
|
20
|
-
@checkers.each { |checker| checker.
|
16
|
+
expect( @checkers ).to_not be( nil )
|
17
|
+
expect( @checkers.length ).to eql( StatusCat::Status.all.length )
|
18
|
+
@checkers.each { |checker| expect( checker ).to be_a_kind_of( StatusCat::Checkers::Base ) }
|
21
19
|
end
|
22
20
|
|
23
21
|
it 'uses the configured before authentication filter' do
|
24
|
-
|
25
|
-
expect(
|
22
|
+
allow( Rails.env ).to receive( :test? ).and_return( false )
|
23
|
+
expect( controller ).to receive( :authenticate! )
|
24
|
+
expect( controller ).to receive( :authorize! )
|
25
|
+
|
26
26
|
get :index
|
27
27
|
end
|
28
28
|
|
@@ -30,7 +30,5 @@ describe StatusCat::StatusController do
|
|
30
30
|
get :index
|
31
31
|
expect( response ).to render_template( StatusCat.config.layout )
|
32
32
|
end
|
33
|
-
|
34
33
|
end
|
35
|
-
|
36
34
|
end
|
data/spec/coverage_spec.rb
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
# Ensures every eligible file has a corresponding spec
|
4
4
|
################################################################################
|
5
5
|
|
6
|
-
require 'spec_helper'
|
7
|
-
|
8
6
|
describe 'coverage' do
|
9
7
|
|
10
8
|
it 'has a spec for every file' do
|
@@ -14,7 +12,7 @@ describe 'coverage' do
|
|
14
12
|
].each do |dir|
|
15
13
|
Dir.glob( File.join( ENGINE_ROOT, dir, '**', '*.{rb,erb,rake}' ) ) do |path|
|
16
14
|
path = path.sub( /#{ENGINE_ROOT}\//, '' )
|
17
|
-
path.
|
15
|
+
expect( path ).to have_a_spec
|
18
16
|
end
|
19
17
|
end
|
20
18
|
end
|
@@ -8,7 +8,7 @@ Dummy::Application.configure do
|
|
8
8
|
config.cache_classes = true
|
9
9
|
|
10
10
|
# Configure static asset server for tests with Cache-Control for performance
|
11
|
-
config.
|
11
|
+
config.serve_static_files = true
|
12
12
|
config.static_cache_control = "public, max-age=3600"
|
13
13
|
|
14
14
|
# Show full error reports and disable caching
|
Binary file
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|