mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 15:48:43 -05:00
FIX: Load scheduled job from a file.
This commit is contained in:
parent
9c24f09fd9
commit
9730d2e3a7
2 changed files with 58 additions and 58 deletions
|
@ -0,0 +1,57 @@
|
||||||
|
module Jobs
|
||||||
|
class DailyPerformanceReport < Jobs::Scheduled
|
||||||
|
every 1.day
|
||||||
|
per_host
|
||||||
|
|
||||||
|
def execute(args)
|
||||||
|
if SiteSetting.daily_performance_report &&
|
||||||
|
RailsMultisite::ConnectionManagement.current_db == "default"
|
||||||
|
result = `ruby #{Rails.root}/plugins/discourse-nginx-performance-report/script/nginx_analyze.rb --limit 1440`
|
||||||
|
|
||||||
|
report_data =
|
||||||
|
if result.strip.empty?
|
||||||
|
<<~TEXT
|
||||||
|
Report is only available in latest image, please run:
|
||||||
|
|
||||||
|
```text
|
||||||
|
cd /var/discourse
|
||||||
|
./launcher rebuild app
|
||||||
|
```
|
||||||
|
TEXT
|
||||||
|
else
|
||||||
|
"```text\n#{result}\n```"
|
||||||
|
end
|
||||||
|
|
||||||
|
PostCreator.create(Discourse.system_user,
|
||||||
|
topic_id: performance_topic_id,
|
||||||
|
raw: report_data,
|
||||||
|
skip_validations: true)
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def performance_topic_id
|
||||||
|
if SiteSetting.performance_report_topic_id > 0
|
||||||
|
topic = Topic.find_by(id: SiteSetting.performance_report_topic_id)
|
||||||
|
return topic.id if topic
|
||||||
|
end
|
||||||
|
|
||||||
|
staff_category = Category.find_by(id: SiteSetting.staff_category_id)
|
||||||
|
raise StandardError, "Staff category was not found" unless staff_category
|
||||||
|
|
||||||
|
post = PostCreator.create(Discourse.system_user,
|
||||||
|
raw: I18n.t('performance_report.initial_post_raw'),
|
||||||
|
category: staff_category.name,
|
||||||
|
title: I18n.t('performance_report.initial_topic_title'),
|
||||||
|
skip_validations: true)
|
||||||
|
|
||||||
|
|
||||||
|
unless post && post.topic_id
|
||||||
|
raise StandardError, "Could not create or retrieve performance report topic id"
|
||||||
|
end
|
||||||
|
|
||||||
|
SiteSetting.performance_report_topic_id = post.topic_id
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -4,62 +4,5 @@
|
||||||
# url: https://github.com/discourse/discourse/tree/master/plugins/discourse-nginx-performance-report
|
# url: https://github.com/discourse/discourse/tree/master/plugins/discourse-nginx-performance-report
|
||||||
|
|
||||||
after_initialize do
|
after_initialize do
|
||||||
module ::Jobs
|
load File.expand_path("../app/jobs/scheduled/daily_performance_report.rb", __FILE__)
|
||||||
class DailyPerformanceReport < Scheduled
|
|
||||||
every 1.day
|
|
||||||
per_host
|
|
||||||
|
|
||||||
def execute(args)
|
|
||||||
if SiteSetting.daily_performance_report &&
|
|
||||||
RailsMultisite::ConnectionManagement.current_db == "default"
|
|
||||||
result = `ruby #{Rails.root}/plugins/discourse-nginx-performance-report/script/nginx_analyze.rb --limit 1440`
|
|
||||||
|
|
||||||
report_data =
|
|
||||||
if result.strip.empty?
|
|
||||||
<<~TEXT
|
|
||||||
Report is only available in latest image, please run:
|
|
||||||
|
|
||||||
```text
|
|
||||||
cd /var/discourse
|
|
||||||
./launcher rebuild app
|
|
||||||
```
|
|
||||||
TEXT
|
|
||||||
else
|
|
||||||
"```text\n#{result}\n```"
|
|
||||||
end
|
|
||||||
|
|
||||||
PostCreator.create(Discourse.system_user,
|
|
||||||
topic_id: performance_topic_id,
|
|
||||||
raw: report_data,
|
|
||||||
skip_validations: true)
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def performance_topic_id
|
|
||||||
if SiteSetting.performance_report_topic_id > 0
|
|
||||||
topic = Topic.find_by(id: SiteSetting.performance_report_topic_id)
|
|
||||||
return topic.id if topic
|
|
||||||
end
|
|
||||||
|
|
||||||
staff_category = Category.find_by(id: SiteSetting.staff_category_id)
|
|
||||||
raise StandardError, "Staff category was not found" unless staff_category
|
|
||||||
|
|
||||||
post = PostCreator.create(Discourse.system_user,
|
|
||||||
raw: I18n.t('performance_report.initial_post_raw'),
|
|
||||||
category: staff_category.name,
|
|
||||||
title: I18n.t('performance_report.initial_topic_title'),
|
|
||||||
skip_validations: true)
|
|
||||||
|
|
||||||
|
|
||||||
unless post && post.topic_id
|
|
||||||
raise StandardError, "Could not create or retrieve performance report topic id"
|
|
||||||
end
|
|
||||||
|
|
||||||
SiteSetting.performance_report_topic_id = post.topic_id
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue