Gon v7.0.0 출시
발행: (2026년 1월 11일 오후 03:29 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
릴리스 v7.0.0
Gon v7.0.0 release – 이번 주요 버전 업데이트는 깨지는 변경(breaking changes)을 도입합니다.
Breaking change: request_store가 이제 선택 사항입니다
request_store에 대한 의존성이 제거되었습니다. Gon은 사용 가능한 경우 ActiveSupport::CurrentAttributes를 선호합니다.
배경
- 이전에는
gon.foo = 'bar'와 같은 값을 할당하면 내부적으로request_store를 사용해 값을 저장했습니다. - Rails 5.2부터 Rails는 공식 대안인 ActiveSupport::CurrentAttributes를 제공합니다.
request_store는 실제로 fiber‑local 변수를 사용하는Thread#[]에 의존합니다. 이로 인해 실행이 다른 Fiber로 전환될 때 잘못된 동작이 발생할 수 있습니다.- 초기 버전의
ActiveSupport::CurrentAttributes도 fiber‑local 저장소를 사용했지만, Rails 7.0부터는 서버 유형에 따라 자동으로 fiber‑local과 thread‑local 저장소를 전환하여 더 안정적입니다.
새로운 동작
| 조건 | Gon의 저장 메커니즘 |
|---|---|
Rails 5.2+ and ActiveSupport::CurrentAttributes가 사용 가능한 경우 | ActiveSupport::CurrentAttributes (자동) |
| 그 외 | request_store (명시적으로 추가해야 함) |
오래된 Rails 버전에서 request_store를 사용해야 한다면 Gemfile에 추가하세요:
# Gemfile
gem 'request_store'
해야 할 일
- 대부분의 최신 Rails 애플리케이션(Rails 5.2+)에서는 별도의 변경이 필요하지 않습니다—Gon이 자동으로
ActiveSupport::CurrentAttributes를 사용합니다. - 문제가 발생하거나 이전 동작에 의존한다면 유지보수자에게 알려 주세요.