Rails Turbo form 함정 2종 — 검증 버튼 눌러도 반응 없던 이유

OTP 2단계 인증 enrollment 화면에서 사용자가 6자리 코드를 입력하고 “확인” 버튼을 눌렀는데 화면에 아무 반응이 없다는 제보를 받았다. 서버 로그에는 정상 처리됐다고 찍혀 있고, 응답 바디도 정상 크기였다. 그런데 브라우저는 그대로 멈춰 있었다. 같은 날 오전에는 다른 사용자가 같은 화면에서 코드를 입력하고 Enter 키를 쳤더니 “2단계 인증이 활성화되어 있지 않습니다” 라는 엉뚱한 alert 가 떴다고 했다. 서버 로그를 까보니 사용자가 누른 적 없는 DELETE 액션이 호출됐다. 두 사고 모두 Turbo Drive 가 원인이었다. Rails 7 부터 기본 활성화된 이 친구가 form 동작에 미묘하게 개입하면서 발생한, 알아두지 않으면 매번 새로 깨닫게 되는 함정 두 종이다. 같은 날 두 번 터진 김에 정리한다. ...

2026-05-27 11:30 · 10분 소요 · Seunghan

Inertia.js v2→v3 마이그레이션 — Svelte 5 + Rails 8 실전 삽질 기록

Rails 8 + Svelte 5 프로젝트에서 @inertiajs/svelte를 v2에서 v3로 올렸다. “패키지 버전만 올리면 되겠지"라는 안일한 생각으로 시작했다가 반나절을 날렸다. 이 글은 그 삽질의 기록이다. 왜 업그레이드해야 했나 프로젝트에서 Svelte 5를 쓰고 있었는데, @inertiajs/svelte v2는 Svelte 5를 “대충” 지원했다. 문제는 persistent layout이었다. Svelte 5는 컴포넌트를 함수로 컴파일하는데, Inertia v2는 page.default.layout = AppLayout 처럼 클래스 기반 컴포넌트에 속성을 추가하는 방식을 썼다. Svelte 5에서는 이게 작동하지 않았다. 결과적으로 40개 넘는 페이지에 <AppLayout>을 수동으로 감싸야 했다. 유지보수 악몽이었다. ...

2026-04-04 00:00 · 7분 소요 · Seunghan
개인정보처리방침 이용약관 면책조항 문의