From 191d6882ebdbb14d80408809dd09b74c7e64b4c6 Mon Sep 17 00:00:00 2001 From: Oleh Fedorenko Date: Wed, 15 May 2024 14:18:52 +0000 Subject: [PATCH] Fixes #37469 - Support Zeitwerk loader --- .../20201014115147_rename_ca_file_column.rb | 2 +- lib/foreman_webhooks/engine.rb | 124 +++++++++--------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/db/migrate/20201014115147_rename_ca_file_column.rb b/db/migrate/20201014115147_rename_ca_file_column.rb index 3d2f5a6..21984a9 100644 --- a/db/migrate/20201014115147_rename_ca_file_column.rb +++ b/db/migrate/20201014115147_rename_ca_file_column.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class RenameCaFileColumn < ActiveRecord::Migration[6.0] +class RenameCAFileColumn < ActiveRecord::Migration[6.0] def change rename_column :webhooks, :ssl_ca_file, :ssl_ca_certs end diff --git a/lib/foreman_webhooks/engine.rb b/lib/foreman_webhooks/engine.rb index ef3ee06..675eb60 100644 --- a/lib/foreman_webhooks/engine.rb +++ b/lib/foreman_webhooks/engine.rb @@ -4,8 +4,6 @@ module ForemanWebhooks class Engine < ::Rails::Engine engine_name 'foreman_webhooks' - config.autoload_paths += Dir["#{config.root}/app/jobs"] - # Add any db migrations initializer 'foreman_webhooks.load_app_instance_data' do |app| ForemanWebhooks::Engine.paths['db/migrate'].existent.each do |path| @@ -13,76 +11,78 @@ class Engine < ::Rails::Engine end end - initializer 'foreman_webhooks.register_plugin', before: :finisher_hook do |_app| - Foreman::Plugin.register :foreman_webhooks do - requires_foreman '>= 3.7' - register_gettext + initializer 'foreman_webhooks.register_plugin', before: :finisher_hook do |app| + app.reloader.to_prepare do + Foreman::Plugin.register :foreman_webhooks do + requires_foreman '>= 3.13' + register_gettext - apipie_documented_controllers ["#{ForemanWebhooks::Engine.root}/app/controllers/api/v2/*.rb"] - ApipieDSL.configuration.sections += ['webhooks'] - ApipieDSL.configuration.dsl_classes_matchers += [ - "#{ForemanWebhooks::Engine.root}/app/lib/foreman_webhooks/renderer/**/*.rb" - ] + apipie_documented_controllers ["#{ForemanWebhooks::Engine.root}/app/controllers/api/v2/*.rb"] + ApipieDSL.configuration.sections += ['webhooks'] + ApipieDSL.configuration.dsl_classes_matchers += [ + "#{ForemanWebhooks::Engine.root}/app/lib/foreman_webhooks/renderer/**/*.rb" + ] - register_global_js_file 'routes' + register_global_js_file 'routes' - # Add permissions - security_block :foreman_webhooks do - permission :view_webhooks, { webhooks: %i[index show auto_complete_search], - 'api/v2/webhooks': %i[index show events] }, resource_type: 'Webhook' - permission :create_webhooks, { webhooks: %i[new create], - 'api/v2/webhooks': [:create] }, resource_type: 'Webhook' - permission :edit_webhooks, { webhooks: %i[edit update], - 'api/v2/webhooks': %i[update test] }, resource_type: 'Webhook' - permission :destroy_webhooks, { webhooks: [:destroy], - 'api/v2/webhooks': [:destroy] }, resource_type: 'Webhook' - permission :view_webhook_templates, { webhook_templates: %i[index show auto_complete_search preview export], - 'api/v2/webhook_templates': %i[index show export] }, - resource_type: 'WebhookTemplate' - permission :create_webhook_templates, { webhook_templates: %i[new create clone_template], - 'api/v2/webhook_templates': %i[create clone import] }, - resource_type: 'WebhookTemplate' - permission :edit_webhook_templates, { webhook_templates: %i[edit update], - 'api/v2/webhook_templates': %i[update import] }, - resource_type: 'WebhookTemplate' - permission :destroy_webhook_templates, { webhook_templates: [:destroy], - 'api/v2/webhook_templates': [:destroy] }, - resource_type: 'WebhookTemplate' - permission :lock_webhook_templates, { webhook_templates: %i[lock unlock], - 'api/v2/webhook_templates': %i[lock unlock] }, - resource_type: 'WebhookTemplate' - end + # Add permissions + security_block :foreman_webhooks do + permission :view_webhooks, { webhooks: %i[index show auto_complete_search], + 'api/v2/webhooks': %i[index show events] }, resource_type: 'Webhook' + permission :create_webhooks, { webhooks: %i[new create], + 'api/v2/webhooks': [:create] }, resource_type: 'Webhook' + permission :edit_webhooks, { webhooks: %i[edit update], + 'api/v2/webhooks': %i[update test] }, resource_type: 'Webhook' + permission :destroy_webhooks, { webhooks: [:destroy], + 'api/v2/webhooks': [:destroy] }, resource_type: 'Webhook' + permission :view_webhook_templates, { webhook_templates: %i[index show auto_complete_search preview export], + 'api/v2/webhook_templates': %i[index show export] }, + resource_type: 'WebhookTemplate' + permission :create_webhook_templates, { webhook_templates: %i[new create clone_template], + 'api/v2/webhook_templates': %i[create clone import] }, + resource_type: 'WebhookTemplate' + permission :edit_webhook_templates, { webhook_templates: %i[edit update], + 'api/v2/webhook_templates': %i[update import] }, + resource_type: 'WebhookTemplate' + permission :destroy_webhook_templates, { webhook_templates: [:destroy], + 'api/v2/webhook_templates': [:destroy] }, + resource_type: 'WebhookTemplate' + permission :lock_webhook_templates, { webhook_templates: %i[lock unlock], + 'api/v2/webhook_templates': %i[lock unlock] }, + resource_type: 'WebhookTemplate' + end - role 'Webhooks Reader', - %i[view_webhooks view_webhook_templates] + role 'Webhooks Reader', + %i[view_webhooks view_webhook_templates] - role 'Webhooks Manager', - %i[view_webhooks create_webhooks edit_webhooks destroy_webhooks - view_webhook_templates create_webhook_templates - edit_webhook_templates destroy_webhook_templates - lock_webhook_templates] + role 'Webhooks Manager', + %i[view_webhooks create_webhooks edit_webhooks destroy_webhooks + view_webhook_templates create_webhook_templates + edit_webhook_templates destroy_webhook_templates + lock_webhook_templates] - # add menu entry - divider :admin_menu, caption: N_('Webhook'), parent: :administer_menu - menu :admin_menu, :webhooks, url: '/webhooks', - url_hash: { controller: :webhooks, action: :index }, - caption: N_('Webhooks'), - parent: :administer_menu - menu :admin_menu, :webhook_templates, url_hash: { controller: :webhook_templates, action: :index }, - caption: N_('Webhook Templates'), - parent: :administer_menu + # add menu entry + divider :admin_menu, caption: N_('Webhook'), parent: :administer_menu + menu :admin_menu, :webhooks, url: '/webhooks', + url_hash: { controller: :webhooks, action: :index }, + caption: N_('Webhooks'), + parent: :administer_menu + menu :admin_menu, :webhook_templates, url_hash: { controller: :webhook_templates, action: :index }, + caption: N_('Webhook Templates'), + parent: :administer_menu - # add helpers to safe-mode - allowed_template_helpers :payload + # add helpers to safe-mode + allowed_template_helpers :payload - # subscribe to all events - subscribe(/.event.foreman$/, ::ForemanWebhooks::EventSubscriber) + # subscribe to all events + subscribe(/.event.foreman$/, ::ForemanWebhooks::EventSubscriber) - register_graphql_query_field :webhook, 'ForemanWebhooks::Types::Webhook', :record_field - register_graphql_query_field :webhooks, 'ForemanWebhooks::Types::Webhook', :collection_field + register_graphql_query_field :webhook, 'ForemanWebhooks::Types::Webhook', :record_field + register_graphql_query_field :webhooks, 'ForemanWebhooks::Types::Webhook', :collection_field - register_graphql_query_field :webhook_template, 'ForemanWebhooks::Types::WebhookTemplate', :record_field - register_graphql_query_field :webhook_templates, 'ForemanWebhooks::Types::WebhookTemplate', :collection_field + register_graphql_query_field :webhook_template, 'ForemanWebhooks::Types::WebhookTemplate', :record_field + register_graphql_query_field :webhook_templates, 'ForemanWebhooks::Types::WebhookTemplate', :collection_field + end end end