From 2f1820d04f8ca94404d8486e6e797c1db70b4126 Mon Sep 17 00:00:00 2001 From: Kenji Okimoto Date: Tue, 17 Apr 2018 15:59:27 +0900 Subject: [PATCH] Use ActiveJob::Base to ride on Rails Signed-off-by: Kenji Okimoto --- app/controllers/misc_controller.rb | 4 ++-- app/controllers/plugins_controller.rb | 8 ++++---- app/jobs/all_plugin_check_update_job.rb | 10 ++++++++++ app/jobs/application_job.rb | 2 ++ .../fluentd_ui_restart_job.rb} | 8 ++++---- .../fluentd_ui_update_check_job.rb} | 8 ++------ .../gem_installer_job.rb} | 9 ++++----- app/jobs/gem_uninstaller_job.rb | 14 ++++++++++++++ app/jobs/gem_update_check_job.rb | 9 +++++++++ app/workers/all_plugin_check_update.rb | 14 -------------- app/workers/gem_uninstaller.rb | 15 --------------- app/workers/gem_update_check.rb | 10 ---------- config/application.rb | 4 +++- config/initializers/fluentd_ui_update_check.rb | 2 +- config/initializers/prefetch_gem_updates.rb | 2 +- 15 files changed, 56 insertions(+), 63 deletions(-) create mode 100644 app/jobs/all_plugin_check_update_job.rb create mode 100644 app/jobs/application_job.rb rename app/{workers/fluentd_ui_restart.rb => jobs/fluentd_ui_restart_job.rb} (81%) rename app/{workers/fluentd_ui_update_check.rb => jobs/fluentd_ui_update_check_job.rb} (65%) rename app/{workers/gem_installer.rb => jobs/gem_installer_job.rb} (64%) create mode 100644 app/jobs/gem_uninstaller_job.rb create mode 100644 app/jobs/gem_update_check_job.rb delete mode 100644 app/workers/all_plugin_check_update.rb delete mode 100644 app/workers/gem_uninstaller.rb delete mode 100644 app/workers/gem_update_check.rb diff --git a/app/controllers/misc_controller.rb b/app/controllers/misc_controller.rb index 630592c..2e3b240 100644 --- a/app/controllers/misc_controller.rb +++ b/app/controllers/misc_controller.rb @@ -19,7 +19,7 @@ class MiscController < ApplicationController end def upgrading_status - if FluentdUiRestart::LOCK.present? + if FluentdUiRestartJob::LOCK.present? return render text: "updating" end @@ -73,6 +73,6 @@ class MiscController < ApplicationController end def update! - FluentdUiRestart.new.async.perform + FluentdUiRestart.perform_later end end diff --git a/app/controllers/plugins_controller.rb b/app/controllers/plugins_controller.rb index 3ceb196..f770716 100644 --- a/app/controllers/plugins_controller.rb +++ b/app/controllers/plugins_controller.rb @@ -17,27 +17,27 @@ class PluginsController < ApplicationController def install params[:plugins].each do |gem_name| - GemInstaller.new.async.perform(gem_name) + GemInstallerJob.perform_later(gem_name) end redirect_to plugins_path end def uninstall params[:plugins].each do |gem_name| - GemUninstaller.new.async.perform(gem_name) + GemUninstallerJob.perform_later(gem_name) end redirect_to plugins_path end def upgrade - GemInstaller.new.async.perform(params[:plugins][:name], params[:plugins][:version]) + GemInstallerJob.perform_later(params[:plugins][:name], params[:plugins][:version]) redirect_to plugins_path end def bulk_upgrade params[:plugins].each do |gem_name| pl = Plugin.new(gem_name: gem_name) - GemInstaller.new.async.perform(gem_name, pl.latest_version) + GemInstallerJob.perform_later(gem_name, pl.latest_version) end redirect_to plugins_path end diff --git a/app/jobs/all_plugin_check_update_job.rb b/app/jobs/all_plugin_check_update_job.rb new file mode 100644 index 0000000..5f296b4 --- /dev/null +++ b/app/jobs/all_plugin_check_update_job.rb @@ -0,0 +1,10 @@ +class AllPluginCheckUpdateJob < ApplicationJob + queue_as :default + + def perform(*args) + Plugin.installed.each do |pl| + GemUpdateCheckJob.perform_later(pl.gem_name) + end + later(3600) # will be checked every hour + end +end diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000..a009ace --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,2 @@ +class ApplicationJob < ActiveJob::Base +end diff --git a/app/workers/fluentd_ui_restart.rb b/app/jobs/fluentd_ui_restart_job.rb similarity index 81% rename from app/workers/fluentd_ui_restart.rb rename to app/jobs/fluentd_ui_restart_job.rb index 5b40744..f49b45b 100644 --- a/app/workers/fluentd_ui_restart.rb +++ b/app/jobs/fluentd_ui_restart_job.rb @@ -1,5 +1,5 @@ -class FluentdUiRestart - include SuckerPunch::Job +class FluentdUiRestartJob < ApplicationJob + queue_as :default LOCK = [] @@ -20,7 +20,7 @@ class FluentdUiRestart lock! # NOTE: install will be failed before released fluentd-ui gem - SuckerPunch.logger.info "[restart] install new fluentd-ui" + logger.info "[restart] install new fluentd-ui" Plugin.new(gem_name: "fluentd-ui").install! if Rails.env.production? @@ -29,7 +29,7 @@ class FluentdUiRestart cmd = %W(bundle exec rails s) end - SuckerPunch.logger.info "[restart] will restart" + logger.info "[restart] will restart" Bundler.with_clean_env do restarter = "#{Rails.root}/bin/fluentd-ui-restart" Process.spawn(*[restarter, $$.to_s, *cmd, *ARGV]) && Process.kill(:TERM, $$) diff --git a/app/workers/fluentd_ui_update_check.rb b/app/jobs/fluentd_ui_update_check_job.rb similarity index 65% rename from app/workers/fluentd_ui_update_check.rb rename to app/jobs/fluentd_ui_update_check_job.rb index cf916f0..f05ce26 100644 --- a/app/workers/fluentd_ui_update_check.rb +++ b/app/jobs/fluentd_ui_update_check_job.rb @@ -1,5 +1,5 @@ -class FluentdUiUpdateCheck - include SuckerPunch::Job +class FluentdUiUpdateCheckJob < ApplicationJob + queue_as :default def perform pl = Plugin.new(gem_name: "fluentd-ui") @@ -8,8 +8,4 @@ class FluentdUiUpdateCheck end later(3600) # will be checked every hour end - - def later(sec) - after(sec) { perform } - end end diff --git a/app/workers/gem_installer.rb b/app/jobs/gem_installer_job.rb similarity index 64% rename from app/workers/gem_installer.rb rename to app/jobs/gem_installer_job.rb index 071d64b..9be59b7 100644 --- a/app/workers/gem_installer.rb +++ b/app/jobs/gem_installer_job.rb @@ -1,6 +1,5 @@ -class GemInstaller - include SuckerPunch::Job - workers 16 +class GemInstallerJob < ApplicationJob + queue_as :default def perform(gem_name, version = nil) SuckerPunch.logger.info "install #{gem_name} #{version}" @@ -9,9 +8,9 @@ class GemInstaller # NOTE: uninstall all versions of `gem_name` then install it for upgrade/downgrade pl.uninstall! if pl.installed? pl.install! - SuckerPunch.logger.info "installed #{gem_name} #{version}" + logger.info "installed #{gem_name} #{version}" rescue Plugin::GemError - SuckerPunch.logger.warn "installing #{gem_name} #{version} is failed" + logger.warn "installing #{gem_name} #{version} is failed" end end end diff --git a/app/jobs/gem_uninstaller_job.rb b/app/jobs/gem_uninstaller_job.rb new file mode 100644 index 0000000..dc78cc4 --- /dev/null +++ b/app/jobs/gem_uninstaller_job.rb @@ -0,0 +1,14 @@ +class GemUninstallerJob < ApplicationJob + queue_as :default + + def perform(gem_name) + logger.info "uninstall #{gem_name}" + pl = Plugin.new(gem_name: gem_name) + begin + pl.uninstall! + logger.info "uninstalled #{gem_name}" + rescue Plugin::GemError + logger.warn "uninstalling #{gem_name} is failed" + end + end +end diff --git a/app/jobs/gem_update_check_job.rb b/app/jobs/gem_update_check_job.rb new file mode 100644 index 0000000..16cd53b --- /dev/null +++ b/app/jobs/gem_update_check_job.rb @@ -0,0 +1,9 @@ +class GemUpdateCheckJob < ApplicationJob + queue_as :default + + def perform(gem_name) + logger.info "check #{gem_name} latest version" + pl = Plugin.new(gem_name: gem_name) + pl.gem_versions! + end +end diff --git a/app/workers/all_plugin_check_update.rb b/app/workers/all_plugin_check_update.rb deleted file mode 100644 index f67a35b..0000000 --- a/app/workers/all_plugin_check_update.rb +++ /dev/null @@ -1,14 +0,0 @@ -class AllPluginCheckUpdate - include SuckerPunch::Job - - def perform - Plugin.installed.each do |pl| - GemUpdateCheck.new.async.perform(pl.gem_name) - end - later(3600) # will be checked every hour - end - - def later(sec) - after(sec) { perform } - end -end diff --git a/app/workers/gem_uninstaller.rb b/app/workers/gem_uninstaller.rb deleted file mode 100644 index 04eac9f..0000000 --- a/app/workers/gem_uninstaller.rb +++ /dev/null @@ -1,15 +0,0 @@ -class GemUninstaller - include SuckerPunch::Job - workers 16 - - def perform(gem_name) - SuckerPunch.logger.info "uninstall #{gem_name}" - pl = Plugin.new(gem_name: gem_name) - begin - pl.uninstall! - SuckerPunch.logger.info "uninstalled #{gem_name}" - rescue Plugin::GemError - SuckerPunch.logger.warn "uninstalling #{gem_name} is failed" - end - end -end diff --git a/app/workers/gem_update_check.rb b/app/workers/gem_update_check.rb deleted file mode 100644 index e533ce9..0000000 --- a/app/workers/gem_update_check.rb +++ /dev/null @@ -1,10 +0,0 @@ -class GemUpdateCheck - include SuckerPunch::Job - workers 16 - - def perform(gem_name) - SuckerPunch.logger.info "check #{gem_name} latest version" - pl = Plugin.new(gem_name: gem_name) - pl.gem_versions! - end -end diff --git a/config/application.rb b/config/application.rb index 56bed7b..1669951 100644 --- a/config/application.rb +++ b/config/application.rb @@ -35,7 +35,9 @@ module FluentdUi # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] config.i18n.default_locale = 'en' - config.autoload_paths += %W(#{config.root}/app/workers #{config.root}/lib) + config.autoload_paths += %W(#{config.root}/lib) + + config.active_job.queue_adapter = :sucker_punch # NOTE: currently, fluentd-ui does not using ActiveRecord, and using Time.now instead of Time.zone.now for each different TZ for users. # If AR will be used, please comment in and check timezone. diff --git a/config/initializers/fluentd_ui_update_check.rb b/config/initializers/fluentd_ui_update_check.rb index 820a475..224809b 100644 --- a/config/initializers/fluentd_ui_update_check.rb +++ b/config/initializers/fluentd_ui_update_check.rb @@ -1,6 +1,6 @@ unless Rails.env.test? unless FluentdUI.td_agent_ui? # td-agent-ui shouldn't auto update - FluentdUiUpdateCheck.new.async.perform + FluentdUiUpdateCheckJob.perform_later end end diff --git a/config/initializers/prefetch_gem_updates.rb b/config/initializers/prefetch_gem_updates.rb index 60d2370..ad88b87 100644 --- a/config/initializers/prefetch_gem_updates.rb +++ b/config/initializers/prefetch_gem_updates.rb @@ -1 +1 @@ -AllPluginCheckUpdate.new.async.perform +AllPluginCheckUpdateJob.perform_later