status_cat 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|