mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-28 17:52:39 +00:00
fix: Search rake task causing Rails boot error (#12416)
## Description This PR sets up an `Enterprise::Railtie` to correctly register rake tasks in the `enterprise` namespace. Previously, rake tasks under `enterprise/lib/tasks` were being eagerly loaded at Rails boot, causing `undefined method 'namespace'` errors. With this change, rake tasks are now registered only in the rake context, avoiding boot-time issues and ensuring they are discoverable with `bin/rake -T`. **Tasks added:** * `search:all` → Reindex messages for all accounts * `search:account[ID]` → Reindex messages for a specific account Fixes: #12414 Co-authored-by: Sojan Jose <sojan@pepalo.com>
This commit is contained in:
7
Rakefile
7
Rakefile
@@ -2,9 +2,8 @@
|
||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||
|
||||
require_relative 'config/application'
|
||||
# Load Enterprise Edition rake tasks if they exist
|
||||
enterprise_tasks_path = Rails.root.join('enterprise/tasks_railtie.rb').to_s
|
||||
require enterprise_tasks_path if File.exist?(enterprise_tasks_path)
|
||||
|
||||
Rails.application.load_tasks
|
||||
|
||||
# Load Enterprise Edition rake tasks if they exist
|
||||
enterprise_tasks_path = Rails.root.join('enterprise/lib/tasks.rb').to_s
|
||||
require enterprise_tasks_path if File.exist?(enterprise_tasks_path)
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
# Load all rake tasks from the enterprise/lib/tasks directory
|
||||
module Tasks
|
||||
Dir.glob(File.join(File.dirname(__FILE__), 'tasks', '*.rake')).each { |r| load r }
|
||||
end
|
||||
@@ -1,22 +1,4 @@
|
||||
module Tasks::SearchTaskHelpers
|
||||
def check_opensearch_config
|
||||
if ENV['OPENSEARCH_URL'].blank?
|
||||
puts 'Skipping reindex as OPENSEARCH_URL is not configured'
|
||||
return false
|
||||
end
|
||||
true
|
||||
end
|
||||
|
||||
def reindex_account(account)
|
||||
Messages::ReindexService.new(account: account).perform
|
||||
puts "Reindex task queued for account #{account.id}"
|
||||
end
|
||||
end
|
||||
|
||||
namespace :search do
|
||||
desc 'Reindex messages using searchkick'
|
||||
include Tasks::SearchTaskHelpers
|
||||
|
||||
desc 'Reindex messages for all accounts'
|
||||
task all: :environment do
|
||||
next unless check_opensearch_config
|
||||
@@ -47,3 +29,16 @@ namespace :search do
|
||||
reindex_account(account)
|
||||
end
|
||||
end
|
||||
|
||||
def check_opensearch_config
|
||||
if ENV['OPENSEARCH_URL'].blank?
|
||||
puts 'Skipping reindex as OPENSEARCH_URL is not configured'
|
||||
return false
|
||||
end
|
||||
true
|
||||
end
|
||||
|
||||
def reindex_account(account)
|
||||
Messages::ReindexService.new(account: account).perform
|
||||
puts "Reindex task queued for account #{account.id}"
|
||||
end
|
||||
|
||||
8
enterprise/tasks_railtie.rb
Normal file
8
enterprise/tasks_railtie.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class TasksRailtie < Rails::Railtie
|
||||
rake_tasks do
|
||||
# Load all rake tasks from enterprise/lib/tasks
|
||||
Dir.glob(Rails.root.join('enterprise/lib/tasks/**/*.rake')).each { |f| load f }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user