ntq_tools 0.5.2 → 0.7.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
2
  SHA256:
3
- metadata.gz: 31adc13868bf234dece4f45a91e3f163ef8c9a72fe433a67e890d34efce043e2
4
- data.tar.gz: b88556d68a75735690128006616bb37e30fec9ae3bbdf39640a3b90b1281d616
3
+ metadata.gz: a594621c88b14946e288aa2368c4163b6dcdbffcc6cd13fd5731034497777559
4
+ data.tar.gz: ec37118491ddd0477344ac0a1f17b5deeecbcf1e14a5da12d43c6f3335ec8b45
5
5
  SHA512:
6
- metadata.gz: 5810e19e2b39d8002f5281d242d6dac226fdb20b3b5ad48fb01c51108ee3ea77fdcaf7ee3d6dd5e4431853941f876723e0f95877374937f0d1adc97b380ae17b
7
- data.tar.gz: c7183009c3c6d2bbe3a784c2bdf13bbb71524a4b6824c29117e2e82c5492fd9f13bb20b0a6731228f5ed7ec7702f6f38a47855936d154fea87b43f4583bc1706
6
+ metadata.gz: d46da61dd5cc76c37fb6f9886ddef63fadda3965c24bc9a2f9e7659bf3844540172e8716423097d69840511cdd107b63f86c41fa24162e1b9f07fdaacc2dc766
7
+ data.tar.gz: d91a1e25634c89ebabbf52f148f686f2fcd2fc7d9ce7fdaec245d2eccf76d3ea2c4056f94a75246a4deba9deece97f49dbeee082f64a92303bbf352a394fea57
data/README.md CHANGED
@@ -4,6 +4,14 @@ Short description and motivation.
4
4
  ## Usage
5
5
  How to use my plugin.
6
6
 
7
+ ## Monitoring
8
+ Pour activer le monitoring, veillez à ajouter ces variables d'environnement
9
+
10
+ ```
11
+ MONITORING_PASSWORD
12
+ MONITORING_USERNAME
13
+ ```
14
+
7
15
  ## Installation
8
16
  Add this line to your application's Gemfile:
9
17
 
@@ -1,6 +1,9 @@
1
1
  module NtqTools
2
2
  class ImpersonationController < ::ApplicationController
3
-
3
+ skip_before_action :authenticate_user!, raise: false, if: -> { Rails.env.development? }
4
+ skip_before_action :authenticate_back_user!, raise: false, if: -> { Rails.env.development? }
5
+ skip_before_action :authenticate_customer!, raise: false, if: -> { Rails.env.development? }
6
+
4
7
  before_action :check_impersonation_enabled, except: [:config]
5
8
  before_action :model_name_is_valid?, only: [:sign_in]
6
9
 
@@ -0,0 +1,27 @@
1
+ require 'ntq_tools/monitor'
2
+ module NtqTools
3
+ class MonitorsController < ActionController::Base
4
+
5
+ before_action :check_basic_auth
6
+
7
+ def check
8
+ @status, @services_status = NtqTools::Monitor.check
9
+
10
+ respond_to do |format|
11
+ format.json do
12
+ render json: { status: @status, services_status: @services_status }, status: @status == 'OK' ? :ok : :service_unavailable
13
+ end
14
+ format.html do
15
+ end
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def check_basic_auth
22
+ authenticate_or_request_with_http_basic do |username, password|
23
+ username == ENV['MONITORING_USERNAME'] && password == ENV['MONITORING_PASSWORD']
24
+ end
25
+ end
26
+ end
27
+ end
@@ -5,8 +5,8 @@ module NtqTools
5
5
  before_action :check_presence_of_key, except: [:refresh]
6
6
 
7
7
  def show
8
- return render json: { data: nil }, status: 404 unless I18n.exists?(params[:key].to_s)
9
-
8
+ return render json: { data: nil }, status: 404 unless I18n.exists?(params[:key].to_s)
9
+
10
10
  render json: {
11
11
  data: I18n.t(params[:key])
12
12
  }, status: 200
data/config/routes.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  NtqTools::Engine.routes.draw do
2
- resource :translation, only: [:update, :show]
3
- get '/translation/refresh' => "translations#refresh"
2
+ get '/check' => "monitors#check"
4
3
 
5
- if NtqTools.impersonation_enabled && NtqTools.impersonation_user_models.any? && defined?(Devise)
4
+ if Rails.env.development?
5
+ resource :translation, only: [:update, :show]
6
+ get '/translation/refresh' => "translations#refresh"
7
+ end
8
+
9
+ if NtqTools.impersonation_enabled && NtqTools.impersonation_user_models.any? && defined?(Devise) && Rails.env.development?
6
10
  get '/impersonation/users' => "impersonation#index"
7
11
  get "/impersonation/:model_name/:id/sign_in" => "impersonation#signin"
8
12
  end
@@ -0,0 +1,37 @@
1
+ require 'ntq_tools/monitors/redis'
2
+ require 'ntq_tools/monitors/database'
3
+ require 'ntq_tools/monitors/sidekiq'
4
+
5
+ module NtqTools
6
+ class Monitor
7
+
8
+ # Check if installed services are running, it return a tuple with the status and the services status
9
+ #
10
+ # eg: [:ok, [{name: 'redis', status: 'OK'}, {name: 'database', status: 'OK'}]]
11
+ # eg: [:error, [{name: 'redis', status: 'OK'}, {name: 'database', status: 'ERROR'}]]
12
+ #
13
+ # @return [Symbol, Array<Hash>]
14
+ def self.check
15
+ services_status = []
16
+ list.each do |monitor|
17
+ next unless monitor.is_installed?
18
+
19
+ services_status << {
20
+ name: monitor.name,
21
+ status: monitor.check ? 'OK' : 'ERROR'
22
+ }
23
+ end
24
+ status = services_status.all? { |service| service[:status] == 'OK' } ? :ok : :error
25
+ [status, services_status]
26
+ end
27
+
28
+ def self.list
29
+ [
30
+ ::NtqTools::Monitors::Redis,
31
+ ::NtqTools::Monitors::Database,
32
+ ::NtqTools::Monitors::Sidekiq
33
+ ]
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ module NtqTools
2
+ module Monitors
3
+ class Base
4
+ class << self
5
+
6
+ def name
7
+ "You must define the name method in your monitor class"
8
+ end
9
+
10
+ def is_installed?
11
+ "You must define the is_installed? method in your monitor class"
12
+ end
13
+
14
+ def check
15
+ "You must define the check method in your monitor class"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require 'ntq_tools/monitors/base'
2
+ module NtqTools
3
+ module Monitors
4
+ class Database < Base
5
+
6
+ class << self
7
+ def name
8
+ "database"
9
+ end
10
+
11
+ def is_installed?
12
+ defined?(::ActiveRecord).present?
13
+ end
14
+
15
+ def check
16
+ ::ActiveRecord::Base.connection_pool.with_connection { |con| con.active? } rescue false
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ require 'ntq_tools/monitors/base'
2
+ module NtqTools
3
+ module Monitors
4
+ class Redis < Base
5
+
6
+ class << self
7
+ def name
8
+ 'redis'
9
+ end
10
+
11
+ def is_installed?
12
+ ::Gem.loaded_specs.has_key?("redis")
13
+ end
14
+
15
+ def check
16
+ ::Sidekiq.redis { |con| con.ping }.present?
17
+ rescue ::Redis::CannotConnectError
18
+ false
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ require 'ntq_tools/monitors/base'
2
+ module NtqTools
3
+ module Monitors
4
+ class Sidekiq < Base
5
+
6
+ class << self
7
+ def name
8
+ "sidekiq"
9
+ end
10
+
11
+ def is_installed?
12
+ ::Gem.loaded_specs.has_key?("sidekiq")
13
+ end
14
+
15
+ def check
16
+ ::Sidekiq::ProcessSet.new.any? { |process| process['busy'] }
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module NtqTools
2
- VERSION = "0.5.2"
2
+ VERSION = "0.7.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ntq_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-19 00:00:00.000000000 Z
11
+ date: 2024-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -58,6 +58,7 @@ files:
58
58
  - app/assets/stylesheets/ntq_tools/application.css
59
59
  - app/controllers/ntq_tools/application_controller.rb
60
60
  - app/controllers/ntq_tools/impersonation_controller.rb
61
+ - app/controllers/ntq_tools/monitors_controller.rb
61
62
  - app/controllers/ntq_tools/translations_controller.rb
62
63
  - app/helpers/ntq_tools/application_helper.rb
63
64
  - app/jobs/ntq_tools/application_job.rb
@@ -70,6 +71,11 @@ files:
70
71
  - lib/generators/templates/ntq_tools.rb
71
72
  - lib/ntq_tools.rb
72
73
  - lib/ntq_tools/engine.rb
74
+ - lib/ntq_tools/monitor.rb
75
+ - lib/ntq_tools/monitors/base.rb
76
+ - lib/ntq_tools/monitors/database.rb
77
+ - lib/ntq_tools/monitors/redis.rb
78
+ - lib/ntq_tools/monitors/sidekiq.rb
73
79
  - lib/ntq_tools/translations/hash_utils.rb
74
80
  - lib/ntq_tools/translations/translation_tool.rb
75
81
  - lib/ntq_tools/translations/yaml_tool.rb