web47core 0.6.2 → 0.6.3

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: e4fa89fdcd38c923f6fde1827baa6d3237f43120e9e82c25f9c13cc7817e580a
4
- data.tar.gz: d25bd53993294c31e1a6f89ce6cffe76c38bd0058411c97c2f4027418a37be43
3
+ metadata.gz: 030670e1f995d60e8bf25b1fb67c9bd91a628e859225114fcfe6203f3c77e818
4
+ data.tar.gz: 7db5d7cbaa718e3a296b209bf4c5e3b943441958c0019601ec031972803f6a09
5
5
  SHA512:
6
- metadata.gz: 1b9b6f4ed7fef7b154e7622f664c2c93bfbd6e26524523befd9b764d3d1f72525b06243b91e8c3fac057230dfff5f659017db4893b123665353e994c3cee2dad
7
- data.tar.gz: ca8ecfac41f5bd5df4d766d48ad6823550d7fbbb62413c3820011edb151e59d5557edd18f4e967507a539fcd2731bd8198e5b352f3f6c546d95d376d034316e9
6
+ metadata.gz: d9dedd01621102e871fd5f6f19b99f46ff331788d1feba24095daf10f023c058ed61a1b7cd654e8d965c478954e41e3e53ee2c39e33efc3f46f3f4d36233e038
7
+ data.tar.gz: 1e77420c64920f5ffde02efa94def8a5d57d3832ebbff25177b80d9253949fbd26049b6e95fc952e7b5da415d9ab33d835e8e29f8032492dc888696134c806fc
@@ -4,36 +4,62 @@
4
4
  # Return the status of the server
5
5
  #
6
6
  class StatusController < ActionController::Base
7
+ protect_from_forgery with: :exception
7
8
  #
8
9
  # Main (and only) page
9
10
  #
10
11
  def index
11
- components = { mongo: mongo_status, redis: redis_status, job_count: job_count_status, cron_job: cron_job_status }
12
+ components = { mongo: mongo_status,
13
+ redis: redis_status,
14
+ jobs: delayed_jobs_status,
15
+ cron_job_servers: cron_job_servers_status,
16
+ workers: workers_status }
12
17
 
13
18
  respond_to do |format|
14
- format.html { render :index, locals: { components: components }, layout: false }
19
+ format.html { render :index, locals: { components: ui_decorators(components) }, layout: false }
15
20
  format.json { render json: components.to_json }
16
- format.text do
17
- overall = components.collect { |_key, item| item[:success] }.all?
18
- render plain: components.flatten, status: overall ? 200 : 500
19
- end
21
+ format.text { render plain: components.flatten, status: text_status(components) }
20
22
  end
21
23
  end
22
24
 
23
25
  private
24
26
 
27
+ #
28
+ # Return the status of the key components, mongo, redis
29
+ #
30
+ def text_status(components)
31
+ components[:mongo][:success] && components[:redis][:success] ? 200 : 500
32
+ rescue StandardError
33
+ 500
34
+ end
35
+
36
+ #
37
+ # Add UI decorators for HTML formatting
38
+ #
39
+ def ui_decorators(components)
40
+ components.each do |key, values|
41
+ if values[:success]
42
+ components[key][:icon_name] = 'check_circle'
43
+ components[key][:icon_color] = 'green-text'
44
+ else
45
+ components[key][:icon_name] = 'error'
46
+ components[key][:icon_color] = 'red-text'
47
+ end
48
+ end
49
+ end
50
+
25
51
  #
26
52
  # Report an error for the check
27
53
  #
28
- def report_error(error)
29
- { success: false, icon_name: 'error', icon_color: 'red-text', message: error.message }
54
+ def report_error(error, metrics = {})
55
+ metrics.merge(success: false, message: error.message)
30
56
  end
31
57
 
32
58
  #
33
59
  # Report a success for the check
34
60
  #
35
- def report_success(message)
36
- { success: true, icon_name: 'check_circle', icon_color: 'green-text', message: message }
61
+ def report_success(message, metrics = {})
62
+ metrics.merge(success: true, message: message)
37
63
  end
38
64
 
39
65
  #
@@ -42,9 +68,9 @@ class StatusController < ActionController::Base
42
68
  def mongo_status
43
69
  raise 'Mongo not available' if SystemConfiguration.count.zero?
44
70
 
45
- report_success "#{SystemConfiguration.count} Configs"
71
+ report_success "#{SystemConfiguration.count} Configs", count: SystemConfiguration.count
46
72
  rescue StandardError => error
47
- report_error(error)
73
+ report_error error, count: 0
48
74
  end
49
75
 
50
76
  #
@@ -55,32 +81,53 @@ class StatusController < ActionController::Base
55
81
  Rails.cache.write 'redis-status-check', value
56
82
  raise 'Redis not available' unless value.eql?(Rails.cache.fetch('redis-status-check'))
57
83
 
58
- report_success 'Redis Available'
84
+ report_success 'Redis Available', count: 1
59
85
  rescue StandardError => error
60
- report_error(error)
86
+ report_error(error, count: 0)
61
87
  end
62
88
 
63
89
  #
64
90
  # Job Count
65
91
  #
66
- def job_count_status
67
- report_success "#{Delayed::Backend::Mongoid::Job.count} Jobs"
92
+ def delayed_jobs_status
93
+ count = Delayed::Backend::Mongoid::Job.count
94
+ report_success "#{count} Jobs", count: count
68
95
  rescue StandardError => error
69
96
  report_error(error)
70
97
  end
71
98
 
72
99
  #
73
- # Cron job status
100
+ # Cron job primary status
74
101
  #
75
- def cron_job_status
76
- server = Cron::Server.primary_server
102
+ def cron_job_servers_status
103
+ server = cron_job_server
77
104
  raise 'No primary server' if server.blank?
78
105
 
79
106
  server_info = "#{server.host_name}(#{server.pid}), last check in #{server.last_check_in_at}"
80
107
  raise "Primary Server is DEAD: #{server_info}" if server.dead?
81
108
 
82
- report_success "Primary Server is alive: #{server_info}"
109
+ report_success "Primary Server is alive: #{server_info}",
110
+ primary_count: 1,
111
+ total_count: Cron::Server.count
83
112
  rescue StandardError => error
84
- report_error(error)
113
+ report_error(error, primary_count: 0, total_count: Cron::Server.count)
114
+ end
115
+
116
+ #
117
+ # Desired and current worker status for servers
118
+ #
119
+ def workers_status
120
+ server = cron_job_server
121
+ raise 'No primary server' if server.blank? || server.dead?
122
+
123
+ report_success "Workers #{server.desired_server_count}/ #{server.current_server_count}",
124
+ desired_count: server.desired_server_count,
125
+ current_count: server.current_server_count
126
+ rescue StandardError => error
127
+ report_error(error, desired_count: 0, current_count: 0)
128
+ end
129
+
130
+ def cron_job_server
131
+ @cron_job_server ||= Cron::Server.primary_server
85
132
  end
86
133
  end
@@ -91,8 +91,4 @@ module CoreHelper
91
91
  def edit_model_path(model)
92
92
  model_action_path(model, :edit)
93
93
  end
94
-
95
- def current_user
96
- User.new
97
- end
98
94
  end
@@ -7,7 +7,7 @@
7
7
  %meta{ name: 'apple-mobile-web-app-status-bar-style', content: 'black'}
8
8
  = stylesheet_link_tag 'https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css'
9
9
  = stylesheet_link_tag 'https://fonts.googleapis.com/icon?family=Material+Icons'
10
- %title "#{Rails.env} Status"
10
+ %title="#{Rails.env} Status"
11
11
  %body{ style: 'background-color: #006064;'}
12
12
  %header
13
13
  %main
@@ -39,6 +39,16 @@ module SearchAble
39
39
  end
40
40
  end
41
41
 
42
+ #
43
+ # Place holder to call to allow for work to be done before we gather up search text fields
44
+ #
45
+ def before_search_text; end
46
+
47
+ #
48
+ # Place holder to call to allow for work to be done after we gather up search text fields
49
+ #
50
+ def after_search_text; end
51
+
42
52
  #
43
53
  # Internal: Update the search and sort text
44
54
  #
@@ -47,8 +57,10 @@ module SearchAble
47
57
  def update_search_and_sort_text
48
58
  return if destroyed?
49
59
 
60
+ before_search_text
50
61
  update_text(search_fields, :search_text)
51
62
  update_text(sort_fields, :sort_text)
63
+ after_search_text
52
64
  end
53
65
 
54
66
  #
@@ -69,6 +81,8 @@ module SearchAble
69
81
  value.to_s.rjust(4, '0')
70
82
  when Array
71
83
  value.empty? ? nil : value.join(' ').downcase
84
+ when Hash
85
+ value.inspect
72
86
  else
73
87
  value.to_s
74
88
  end
@@ -110,6 +110,7 @@ class EmailNotification < Notification
110
110
  mail.delivery_method :smtp, smtp_configuration
111
111
  end
112
112
 
113
+ mail.header['X-Mailgun-Native-Send'] = 'yes' if SystemConfiguration.mail_gun_configured?
113
114
  # Deliver it
114
115
  mail.deliver
115
116
  rescue StandardError => error
@@ -138,8 +139,8 @@ class EmailNotification < Notification
138
139
  # sender address
139
140
  #
140
141
  def sender_address
141
- address = SystemConfiguration.smtp_user_name
142
- unless account.nil?
142
+ address = SystemConfiguration.support_email
143
+ if account.present?
143
144
  account_smtp = account.fetch_smtp_configuration
144
145
  address = account_smtp.username if account_smtp.use?
145
146
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Web47core
4
- VERSION = '0.6.2'
4
+ VERSION = '0.6.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web47core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Schroeder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-16 00:00:00.000000000 Z
11
+ date: 2020-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport