Rails 7.2와 Rails 8의 개발 컨테이너 구성 변화는 Redis의 기본 포함 여부에 초점을 맞춥니다.
Rails 7.2 개발 컨테이너 구성
Rails 7.2는 개발 컨테이너를 옵트인 기능으로 제공했습니다. 새로운 Rails 애플리케이션 생성 시 --devcontainer 옵션을 사용하거나, 기존 앱에 bin/rails devcontainer 명령을 통해 추가할 수 있었습니다. .devcontainer 폴더는 앱을 부팅하고 원격 컨테이너에서 개발하는 데 필요한 모든 것을 포함했습니다.
- 포함된 서비스:
- Kredis, ActionCable 등을 위한 Redis 컨테이너
- 데이터베이스 (SQLite, Postgres, MySQL 또는 MariaDB)
- 시스템 테스트를 위한 Headless Chrome 컨테이너
- 로컬 디스크 사용 및 미리보기 기능이 구성된 Active Storage
-
기본
compose.yaml예시:rails-app,selenium,redis서비스가 명시적으로 정의되었으며,redis서비스는redis:7.2이미지를 사용했습니다. - 기본
devcontainer.json예시:containerEnv에REDIS_URL이 설정되었고,forwardPorts에 6379 포트가 포함되어 있었습니다.
Rails 8 개발 컨테이너 구성 변경
Rails 8에서는 개발 컨테이너 생성 시 Redis가 기본적으로 포함되지 않습니다. 이는 Rails 8이 Solid Queue 및 Solid Cache 젬을 기본으로 사용하여 Redis에 대한 의존성을 줄였기 때문입니다.
- Redis 제외 이유:
- 새로 생성되는 앱은 Solid Queue와 Solid Cache 젬을 기본으로 사용하며, 이 젬들은 Redis에 의존하지 않습니다.
- 기존 앱에 대한 개발 컨테이너 생성 시에도 Solid 젬 중 하나라도 사용 중이면 Redis가 포함되지 않습니다.
-
새로운
compose.yaml예시:rails-app및selenium서비스만 포함되며,redis서비스 항목이 완전히 제거되었습니다. -
새로운
devcontainer.json예시:containerEnv에서REDIS_URL설정이 사라졌고,forwardPorts에서도 6379 포트가 제외되었습니다. - Redis 포함 조건: ActiveJob 또는 ActionCable을 사용하는 앱에서 Redis를 포함하려면 앱 생성 시
--skip-solid옵션을 사용해야 합니다.
이러한 변화는 Rails 애플리케이션의 개발 환경 구성에 있어 Redis의 기본 역할이 축소되었음을 명확히 보여줍니다.