mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-09 00:00:12 +09:00
30 lines
848 B
Ruby
30 lines
848 B
Ruby
# Repair the database selected by each schema-load or migration operation.
|
|
# db:prepare calls DatabaseTasks directly, bypassing Rake enhancements;
|
|
# method hooks also run on every invocation.
|
|
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
|