mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 18:47:51 +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.
|
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
||||||
|
|
||||||
require_relative 'config/application'
|
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
|
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
|
namespace :search do
|
||||||
desc 'Reindex messages using searchkick'
|
|
||||||
include Tasks::SearchTaskHelpers
|
|
||||||
|
|
||||||
desc 'Reindex messages for all accounts'
|
desc 'Reindex messages for all accounts'
|
||||||
task all: :environment do
|
task all: :environment do
|
||||||
next unless check_opensearch_config
|
next unless check_opensearch_config
|
||||||
@@ -47,3 +29,16 @@ namespace :search do
|
|||||||
reindex_account(account)
|
reindex_account(account)
|
||||||
end
|
end
|
||||||
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