healthier 0.1.3 → 0.1.5

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
2
  SHA256:
3
- metadata.gz: e3d31d17199c50606705f54e8711cce324edaa9a2e8e56a557d73529d976ef83
4
- data.tar.gz: d63895420862e07ca45402790400cbfea4c96628827f8b157506491d14b06823
3
+ metadata.gz: 9b9085660c0bf98cddf325db77e9d7f7a655c34e4af17e0febcc2d0468d42a10
4
+ data.tar.gz: b4cbbda7e758b1375c07d3ff98efa31ac85a52a9ede9c67dd2a06a95c75f9103
5
5
  SHA512:
6
- metadata.gz: 9a5b5e7f4a60fdf90c0ba443761f9a27ba2992b4ef5ebb534d92825df2409d9fcaa029962867ccab53ed8deef8ecf344b0557dd76d5dc19fc6428db0f472ea50
7
- data.tar.gz: 3866fec75e625ca437d672354632227901629641a97c4d04b7fb0559aa1594baee27d365e4e5fc6c59961e11009f7608560cef5df9f8a4851cc9d5c7501f52b0
6
+ metadata.gz: 522eea93d714a4afe55e18f20be294674a3406915b31c858567471117aa6e9089d8a8269517efb6bd2b8c29a70d895109e1047a93c7ec68a739d856b8656d6a2
7
+ data.tar.gz: 65e6082188ace39b2013404301fa137596b501d0f301fa0679697311038217642a08e29a7b5786fb406fdecf54016d90d49e6f652e90b89a9ae101b2db29448a
data/README.md CHANGED
@@ -26,23 +26,35 @@ Or install it yourself as:
26
26
  $ gem install healthier
27
27
  ```
28
28
 
29
- In your application routes.rb file:
29
+ # Installer:
30
30
 
31
- ```ruby
32
- mount Healthier::Engine => '/healthier'
31
+ ```bash
32
+ rails generate healthier:config
33
33
  ```
34
34
 
35
- In the config directory, make a healthier folder and create a file
36
- called services.yml:
37
-
35
+ This will generate these two files:
36
+ 1. config/healthier.yml
38
37
  ```yaml
39
38
  ---
40
39
  healthier:
41
40
  depends_on:
42
- - name: 'postgresql'
43
- - name: 'mongodb'
44
- - name: 'redis'
45
- - name: 'rabbitmq'
41
+ # Uncomment accordingly
42
+ # - name: 'postgresql'
43
+ # - name: 'mongodb'
44
+ # - name: 'redis'
45
+ # - name: 'rabbitmq'
46
+ ```
47
+ 2. config/initializers/healthier.rb
48
+ ```ruby
49
+ Healthier.setup do |config|
50
+ config.depends_on = config.healthier.call
51
+ end
52
+ ```
53
+
54
+ In your application routes.rb file:
55
+
56
+ ```ruby
57
+ mount Healthier::Engine => '/healthier'
46
58
  ```
47
59
 
48
60
  ENVs for basic authentication:
@@ -3,12 +3,5 @@
3
3
  module Healthier
4
4
  # ApplicationController
5
5
  class ApplicationController < ActionController::Base
6
- include ActionController::HttpAuthentication::Basic::ControllerMethods
7
-
8
- before_action :authenticate_request
9
-
10
- def authenticate_request
11
- BasicAuthService.authorize(self)
12
- end
13
6
  end
14
7
  end
@@ -3,8 +3,22 @@
3
3
  module Healthier
4
4
  # Controller for performing health checks
5
5
  class ChecksController < ApplicationController
6
+ include ActionController::HttpAuthentication::Basic::ControllerMethods
7
+
8
+ before_action :authenticate_request
9
+
6
10
  def ping
7
11
  render json: Healthier::Engine.ping!
8
12
  end
13
+
14
+ protected
15
+
16
+ def authenticate_request
17
+ api_authenticator.authenticate
18
+ end
19
+
20
+ def api_authenticator
21
+ Healthier::ApiAuthenticator.new(self)
22
+ end
9
23
  end
10
24
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Healthier
4
+ # Generates a healthier.yml
5
+ class ConfigGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('templates', __dir__)
7
+
8
+ def create_healthier_file
9
+ create_file 'config/initializers/healthier.rb', <<~RUBY
10
+ # frozen_string_literal: true
11
+
12
+ Healthier.setup do |config|
13
+ config.depends_on = config.healthier.call
14
+ end
15
+ RUBY
16
+ end
17
+
18
+ def create_healthier_yaml
19
+ create_file 'config/healthier.yml', <<~YAML
20
+ ---
21
+ healthier:
22
+ # Uncomment accordingly
23
+ depends_on:
24
+ # - name: 'postgresql'
25
+ # - name: 'mongodb'
26
+ # - name: 'redis'
27
+ # - name: 'rabbitmq'
28
+ YAML
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Healthier
4
+ # Engine
5
+ class ApiAuthenticator
6
+ attr_accessor :controller
7
+
8
+ def initialize(controller)
9
+ @controller = controller
10
+ end
11
+
12
+ def authenticate
13
+ send("authenticate_with_#{Healthier.auth_mechanism}")
14
+ end
15
+
16
+ def authenticate_with_bearer_token
17
+ controller.authenticate_with_http_token do |token, _options|
18
+ ENV['BEARER_TOKEN'] == token
19
+ end
20
+ end
21
+
22
+ def authenticate_with_basic_auth
23
+ controller.authenticate_or_request_with_http_basic do |username, password|
24
+ username == ENV['USERNAME'] && password == ENV['PASSWORD']
25
+ end
26
+ end
27
+ end
28
+ end
@@ -37,11 +37,7 @@ module Healthier
37
37
  end
38
38
 
39
39
  def conf
40
- @conf ||= YAML.load_file(config_path)['healthier']
41
- end
42
-
43
- def config_path
44
- Rails.root.join('config/healthier/services.yml')
40
+ @conf ||= Healthier.depends_on['healthier']
45
41
  end
46
42
 
47
43
  def ping_it(service)
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Healthier
4
4
  # MAJOR.MINOR.PATCH
5
- VERSION = '0.1.3'
5
+ VERSION = '0.1.5'
6
6
  end
data/lib/healthier.rb CHANGED
@@ -2,8 +2,15 @@
2
2
 
3
3
  require 'healthier/version'
4
4
  require 'healthier/engine'
5
+ require 'healthier/api_authenticator'
5
6
 
6
7
  # Healthier
7
8
  module Healthier
8
- # Your code goes here...
9
+ def self.setup
10
+ yield self
11
+ end
12
+
13
+ mattr_accessor :healthier, default: -> { YAML.load_file(Rails.root.join('config/healthier.yml')) }
14
+ mattr_accessor :auth_mechanism, default: 'basic_auth'
15
+ mattr_accessor :depends_on, default: {}
9
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: healthier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nima Yonten
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-10 00:00:00.000000000 Z
11
+ date: 2023-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,9 +36,10 @@ files:
36
36
  - Rakefile
37
37
  - app/controllers/healthier/application_controller.rb
38
38
  - app/controllers/healthier/checks_controller.rb
39
- - app/services/basic_auth_service.rb
40
39
  - config/routes.rb
40
+ - lib/generators/healthier/config_generator.rb
41
41
  - lib/healthier.rb
42
+ - lib/healthier/api_authenticator.rb
42
43
  - lib/healthier/engine.rb
43
44
  - lib/healthier/version.rb
44
45
  - lib/tasks/healthier_tasks.rake
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This module authenticates the API with Basic Auth
4
- class BasicAuthService
5
- def self.authorize(controller)
6
- controller.authenticate_or_request_with_http_basic do |username, password|
7
- username == ENV['USERNAME'] && password == ENV['PASSWORD']
8
- end
9
- end
10
- end