Files
once-campfire/lib/tasks/room_messages_count.rake
T
2026-10-07 23:50:37 +02:00

30 lines
897 B
Ruby

# Repair while DatabaseTasks still selects the database it loaded or migrated.
# db:prepare calls these methods directly, and test tasks restore their original
# pool before a Rake enhancement runs. This also avoids Rake's once-only invoke.
module RoomMessagesCountDatabaseTasks
def load_schema(...)
super.tap { repair_room_messages_count }
end
def migrate(...)
super.tap { repair_room_messages_count }
end
private
def repair_room_messages_count
migration_connection_pool.with_connection do |connection|
Room::MessagesCount.ensure!(connection)
end
end
end
ActiveRecord::Tasks::DatabaseTasks.singleton_class.prepend(RoomMessagesCountDatabaseTasks)
namespace :room_messages_count do
task ensure: :environment do
ActiveRecord::Base.connection_pool.with_connection do |connection|
Room::MessagesCount.ensure!(connection)
end
end
end