mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-08 15:50:08 +09:00
30 lines
897 B
Ruby
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
|