/
Dmitry-F
/
cbt_tool
Обзор
Документация
Войти
/
Dmitry-F
/
cbt_tool
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
python-ml-service
bin/fix_trix_forms
80 строк
3 KB
Dmitriy-Filatov
🔥🔴🚨 КРИТИЧЕСКИ ВАЖНЫЙ КОММИТ: АУДИТ + БЕЗОПАСНОСТЬ
03 мар 2026, 22:41
03 мар 2026, 22:41
b884db8
Код
Авторство
О чём код?
#!/bin/bash # Цвета RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}🔧 ИСПРАВЛЕНИЕ TURBO + TRIX ФОРМ${NC}\n" # 1. Находим проблемные файлы echo -n "1. Поиск форм с Trix без turbo:false... " FILES=$(grep -l "rich_text_area" -r app/views/ --include="*.html.erb" 2>/dev/null | xargs grep -L "turbo: false" 2>/dev/null) FILE_COUNT=$(echo "$FILES" | grep -c "^" 2>/dev/null || echo "0") if [ "$FILE_COUNT" -eq "0" ] || [ -z "$FILES" ]; then echo -e "${GREEN}✅ не найдено (все уже исправлены)${NC}" exit 0 else echo -e "${YELLOW}⚠️ найдено $FILE_COUNT файлов${NC}" echo "$FILES" | sed 's/^/ 📄 /' fi # 2. Создаем бэкап echo -e "\n2. ${BLUE}Создание бэкапа...${NC}" BACKUP_DIR="tmp/trix_backup_$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" for file in $FILES; do cp "$file" "$BACKUP_DIR/" echo " 💾 $file -> $BACKUP_DIR/" done echo -e "${GREEN} ✅ Бэкап создан: $BACKUP_DIR${NC}" # 3. Исправляем формы echo -e "\n3. ${BLUE}Применение исправлений...${NC}" for file in $FILES; do # Показываем что меняем (первые 2 строки с form_with) echo " 🔧 $file" sed -i '' 's/form_with(\(.*\)) do/form_with(\1, data: { turbo: false }) do/g' "$file" done echo -e "${GREEN} ✅ Исправления применены${NC}" # 4. ПРОВЕРКА СИНТАКСИСА echo -e "\n4. ${BLUE}Проверка синтаксиса ERB...${NC}" SYNTAX_OK=0 SYNTAX_FAIL=0 for file in $FILES; do # Грубая проверка: ищем незакрытые теги или явные ошибки if erb -x -T '-' "$file" | ruby -c 2>/dev/null >/dev/null; then echo -e " ${GREEN}✅ $file (синтаксис OK)${NC}" SYNTAX_OK=$((SYNTAX_OK + 1)) else echo -e " ${RED}❌ $file (ОШИБКА СИНТАКСИСА!)${NC}" erb -x -T '-' "$file" | ruby -c 2>&1 | head -1 | sed 's/^/ ➜ /' SYNTAX_FAIL=$((SYNTAX_FAIL + 1)) fi done # 5. ИТОГ echo -e "\n${BLUE}📊 РЕЗУЛЬТАТ:${NC}" if [ $SYNTAX_FAIL -eq 0 ]; then echo -e "${GREEN} ✅ Все $SYNTAX_OK файлов исправлены корректно${NC}" echo -e "\n${GREEN}🏁 ГОТОВО! Запусти ./bin/audit для проверки${NC}" # Спросить про удаление бэкапа echo -e "\n${YELLOW}Удалить бэкап? (y/n)${NC}" read -r answer if [ "$answer" = "y" ]; then rm -rf "$BACKUP_DIR" echo -e "${GREEN}✅ Бэкап удален${NC}" else echo -e "${YELLOW}ℹ️ Бэкап сохранен: $BACKUP_DIR${NC}" fi else echo -e "${RED} ❌ $SYNTAX_FAIL файлов с ошибками!${NC}" echo -e "${YELLOW} ℹ️ Бэкап восстановления: $BACKUP_DIR${NC}" echo -e "\n${RED}⚠️ Восстанови файлы из бэкапа вручную!${NC}" fi