refactor: Ajusta o namespace de InboxAutomation, refina os caminhos de eager loading da aplicação enterprise e melhora a robustez do status da instância com verificação de connection_pool e tratamento de erro Redis mais abrangente.

This commit is contained in:
Rodrigo Borba 2026-01-25 12:23:12 -03:00
parent 0c9e59c499
commit ccb28d8305
3 changed files with 11 additions and 4 deletions

View File

@ -20,7 +20,12 @@ class SuperAdmin::InstanceStatusesController < SuperAdmin::ApplicationController
end
def instance_meta
@metrics['Database Migrations'] = ActiveRecord::Base.connection_pool.migration_context.needs_migration? ? 'pending' : 'completed'
context = if ActiveRecord::Base.respond_to?(:connection_pool)
ActiveRecord::Base.connection_pool.migration_context
else
ActiveRecord::Base.connection.migration_context
end
@metrics['Database Migrations'] = context.needs_migration? ? 'pending' : 'completed'
end
def chatwoot_version
@ -53,7 +58,8 @@ class SuperAdmin::InstanceStatusesController < SuperAdmin::ApplicationController
@metrics["Redis 'maxmemory' setting"] = redis_server['maxmemory']
@metrics["Redis 'maxmemory_policy' setting"] = redis_server['maxmemory_policy']
end
rescue Redis::CannotConnectError
rescue StandardError => e
Rails.logger.warn "Redis status check failed: #{e.message}"
@metrics['Redis alive'] = false
end
end

View File

@ -77,7 +77,7 @@ class Inbox < ApplicationRecord
has_one :agent_bot, through: :agent_bot_inbox
has_many :webhooks, dependent: :destroy_async
has_many :hooks, dependent: :destroy_async, class_name: 'Integrations::Hook'
has_many :inbox_automations, dependent: :destroy_async, class_name: 'Captain::InboxAutomation'
has_many :inbox_automations, dependent: :destroy_async, class_name: '::Captain::InboxAutomation'
# Jasmine
has_one :jasmine_inbox_config, class_name: 'Jasmine::InboxConfig', dependent: :destroy

View File

@ -42,7 +42,8 @@ module Chatwoot
config.eager_load_paths << Rails.root.join('enterprise/lib')
config.eager_load_paths << Rails.root.join('enterprise/listeners')
# rubocop:disable Rails/FilePath
config.eager_load_paths += Dir["#{Rails.root}/enterprise/app/*"]
enterprise_app_paths = Dir["#{Rails.root}/enterprise/app/*"].reject { |path| %w[views javascript assets].include?(File.basename(path)) }
config.eager_load_paths += enterprise_app_paths
# rubocop:enable Rails/FilePath
# Add enterprise views to the view paths
config.paths['app/views'].unshift('enterprise/app/views')