Bundler와 bundle install: 의존성 관리의 기반
Bundler는 Ruby 프로젝트의 의존성 관리 도구입니다. Gemfile을 분석하여 젬 버전을 결정하고 Gemfile.lock에 고정함으로써, 프로젝트가 요구하는 정확한 젬을 설치하고 로드합니다. 이는 시스템 전역 젬과의 충돌을 방지하고 개발 환경의 일관성을 유지하는 핵심입니다. bundle install 명령은 이러한 의존성 해결 및 설치를 담당하며, 팀과 배포 환경 간의 젬 버전 일치를 보장합니다.
bundle exec: 일관된 환경 실행의 필수
bundle exec는 Gemfile 및 Gemfile.lock에 명시된 젬 환경 내에서 명령어를 실행합니다. 이는 프로젝트가 의존하는 정확한 젬 버전만을 사용하게 하여, 의도치 않은 시스템 전역 젬 로드를 방지합니다. bundle exec rails server, bundle exec rspec 등의 사용은 버전 충돌을 막고 일관된 동작을 보장하는 필수적인 습관입니다.
rails c 사용의 위험성과 bundle exec rails c의 중요성
단순히 rails c를 실행하는 것은 시스템 전역 젬을 로드할 위험이 있어, Gemfile.lock과 다른 버전 사용으로 인한 미묘한 버그, 예측 불가능한 오류, 환경 간 불일치를 초래할 수 있습니다。
-
rails c: 시스템 젬을 사용하고Gemfile.lock과 불일치할 위험이 있어 실제 개발에 부적합합니다. -
bundle exec rails c:Gemfile.lock에 정의된 젬만을 사용하여 일관되고 예측 가능한 동작을 보장합니다. 이는 프로덕션 및 CI 환경과 일치하는 올바른 개발 방식입니다.