Rails에서 더 이상 필요 없는 5가지 Gem

5 gems you no longer need with Rails | Arkency Blog

작성자
발행일
2025년 06월 27일

핵심 요약

  • 1 최신 Rails 버전에서는 내장 기능으로 인해 특정 외부 Gem이 더 이상 필요하지 않습니다.
  • 2 `aasm`, `activerecord-import`, `timecop`, `marginalia`, `attr_encrypted` 등 5가지 Gem이 주요 대상입니다.
  • 3 불필요한 Gem 제거는 Rails 업그레이드 과정을 간소화하고 애플리케이션 유지보수를 용이하게 합니다.

도입

Rails 애플리케이션을 업그레이드하는 과정에서 가장 까다로운 부분 중 하나는 프레임워크 외의 의존성(Gem) 관리입니다. 오래된 애플리케이션은 부트스트랩 시 유용했던 Gem들을 포함하고 있지만, 이 Gem들은 프레임워크 버전과의 호환성, 다른 의존성과의 상호작용, 파괴적 변경사항 도입 여부 등으로 인해 업그레이드 시 복잡성을 가중시킵니다. 따라서 불필요한 Gem을 제거하는 것은 업그레이드 과정을 크게 간소화하고 애플리케이션의 유지보수를 원활하게 하는 데 도움이 됩니다. 이 글은 더 이상 Rails에서 필요 없는 주요 Gem들을 소개하며, 외부 Gem을 프레임워크 내장 기능으로 대체하는 접근 방식을 제시합니다.

이 글에서 제시하는 ‘더 이상 필요 없는 Gem’ 목록은 Rails의 발전과 함께 프레임워크 내에 유사하거나 더 나은 기능이 통합되었기 때문입니다. 첫째, 상태 관리를 위한 aasm Gem은 Rails 4.1부터 도입된 enums 기능으로 대체 가능합니다. 이는 코드 베이스에서 aasm을 발견했을 때 enums로 전환하는 방법을 고려할 수 있음을 의미합니다. 둘째, 대량 작업을 위한 activerecord-import Gem은 Rails 6.0에서 insert_allupsert_all과 같은 메서드가 도입되면서 필요성이 줄어들었습니다. 특히 Rails 7.1에서는 빈 컬렉션에 대한 대량 작업 시 activerecord-import와 유사한 동작을 제공하여 호환성이 더욱 향상되었습니다. 셋째, 테스트 시 시간 조작을 위한 timecop Gem은 Rails 4.1부터 제공되는 ActiveSupport::Testing::TimeHelpers로 대체 가능합니다. 이 헬퍼는 시간 고정 및 이동 기능을 제공하며, 테스트 케이스 내에서 시간 변경을 안전하게 격리하기 위한 after_teardown 콜백까지 포함합니다. 넷째, 데이터베이스 쿼리 로깅에 주석을 추가하는 marginalia Gem은 Rails 7.0부터 프레임워크의 일부로 통합되었습니다. config.active_record.query_log_tags_enabled = true 설정을 통해 활성화할 수 있으며, 관련 설정도 Marginalia::Comment 대신 config.active_record.query_log_tags로 변경되었습니다. 마지막으로, ActiveRecord 속성 암호화를 위한 attr_encrypted Gem은 Rails 7.0에서 ActiveRecord 속성 암호화 기능이 도입되면서 대체 가능해졌습니다. 다만, 기존 암호화된 데이터베이스 컬럼의 저장 방식 차이로 인해 직접적인 교체는 다소 복잡할 수 있으며, PagerTree 팀에서 제시한 업그레이드 경로를 참고할 수 있습니다. 독자 추천 목록에서는 request_store Gem이 Rails 5.2의 ActiveSupport::CurrentAttributes 도입으로 인해 더 이상 필요 없게 되었다고 언급됩니다.

결론

결론적으로, Rails 프레임워크가 지속적으로 발전하고 새로운 기능들을 내장함에 따라, 과거에는 필수적이었던 많은 외부 Gem들이 이제는 불필요해졌습니다. 이러한 Gem들을 내장 기능으로 대체하는 것은 애플리케이션의 의존성을 줄이고, 코드 베이스를 간소화하며, Rails 업그레이드 프로세스를 훨씬 효율적으로 만듭니다. 개발자들은 기존 코드 베이스를 검토하여 더 이상 필요 없는 Gem을 식별하고, Rails의 최신 기능을 활용하여 이를 대체함으로써 애플리케이션의 성능과 유지보수성을 향상시킬 수 있습니다. 이는 장기적인 관점에서 애플리케이션의 안정성과 보안을 유지하는 데 기여할 것입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!