/
Dmitry-F
/
cbt_tool
Обзор
Документация
Войти
/
Dmitry-F
/
cbt_tool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
lib/tasks/audio_audit.rake
97 строк
3 KB
Dmitriy-Filatov
🧹 ФИНАЛЬНАЯ СТЕРИЛИЗАЦИЯ ИНФРАСТРУКТУРЫ
17 мар 2026, 10:59
17 мар 2026, 10:59
d3fec0b
Код
Авторство
О чём код?
# lib/tasks/audio_audit.rake namespace :system do desc "Комплексная проверка аудио-подсистемы для SmerDiary::DiaryEntry" task audio_audit: :environment do puts "🔊 АУДИТ АУДИО-ПОДСИСТЕМЫ (v4.2 - для SmerDiary::DiaryEntry)" puts "=" * 60 errors = [] warnings = [] # 1. ПРОВЕРКА FFMPEG puts "\n📼 1. FFmpeg" ffmpeg_version = `ffmpeg -version 2>&1 | head -n 1` rescue nil if ffmpeg_version.present? puts " ✅ FFmpeg установлен: #{ffmpeg_version.strip}" else errors << "❌ FFmpeg не установлен" end # 2. ПРОВЕРКА МОДЕЛИ SmerDiary::DiaryEntry puts "\n🗃️ 2. Модель SmerDiary::DiaryEntry" begin model = SmerDiary::DiaryEntry puts " ✅ Модель найдена: SmerDiary::DiaryEntry" # Показываем поля puts " 📋 Существующие поля:" model.column_names.each do |col| type = model.columns.find { |c| c.name == col }&.type puts " - #{col} (#{type})" end # Проверка поля для транскрипции if model.column_names.include?("transcription") puts " ✅ Поле 'transcription' уже есть" else warnings << "Поле 'transcription' не найдено" puts " Создайте миграцию:" puts " rails g migration AddTranscriptionToSmerDiaryDiaryEntry transcription:text" puts " rails db:migrate" end # Проверка attachment if model.reflect_on_attachment(:audio_recording) puts " ✅ has_one_attached :audio_recording настроен" else warnings << "Attachment :audio_recording не найден" puts " Добавьте в app/models/smer_diary/diary_entry.rb:" puts " class DiaryEntry" puts " has_one_attached :audio_recording" puts " end" end rescue NameError errors << "❌ Модель SmerDiary::DiaryEntry не найдена" end # 3. ПРОВЕРКА ACTIVESTORAGE puts "\n☁️ 3. ActiveStorage" if Rails.application.config.active_storage.service service = Rails.application.config.active_storage.service puts " ✅ ActiveStorage настроен на сервис: #{service}" end # 4. ПРОВЕРКА STIMULUS КОНТРОЛЛЕРА puts "\n🎮 4. Stimulus контроллер" controller_path = Rails.root.join("app/javascript/controllers/audio_recorder_controller.js") if File.exist?(controller_path) puts " ✅ Контроллер существует" else warnings << "Контроллер не найден (создадим позже)" end # ИТОГИ puts "\n" + "=" * 60 puts "📊 РЕЗУЛЬТАТЫ АУДИТА" if errors.any? puts "\n❌ КРИТИЧЕСКИЕ ОШИБКИ:" errors.each { |e| puts " #{e}" } end if warnings.any? puts "\n⚠️ ПРЕДУПРЕЖДЕНИЯ:" warnings.each { |w| puts " #{w}" } end if errors.empty? && warnings.empty? puts "\n✅ ПОЛНАЯ ГОТОВНОСТЬ к двойной записи!" elsif errors.empty? puts "\n⚠️ МОЖНО ПРОДОЛЖАТЬ, но устраните предупреждения" else puts "\n❌ ТРЕБУЕТСЯ ИСПРАВЛЕНИЕ ошибок" end end end