macOS에서 Rails 8 Solid Queue 설정 시 발생한 문제 해결

Rails 8, Solid Queue on macOS (former OS X) | by Stéphane Paquet | Jun, 2025 | Medium

작성자
jeff
발행일
2025년 06월 23일

핵심 요약

  • 1 Rails 8 프로젝트에서 Solid Queue를 macOS 환경에 설정하는 과정에서 발생한 주요 문제와 해결책을 다룹니다.
  • 2 초기 설정 시 잘못된 마이그레이션 명령어 사용과 macOS 환경에서의 Segmentation Fault 오류가 발생했습니다.
  • 3 Puma 설정 변경 및 Procfile에 특정 환경 변수를 추가함으로써 안정적인 Solid Queue 실행 환경을 구축했습니다.

도입

본 문서는 새로운 Rails 8 프로젝트에서 백그라운드 작업 처리를 위해 Solid Queue를 macOS 환경에 도입하는 과정에서 직면한 기술적 난관과 그 해결 방안을 상세히 설명합니다. 기존의 Sidekiq이나 GoodJob 대신 Postgres 기반의 Solid Queue를 선택했으나, 공식 문서의 불완전성 및 macOS 특유의 환경 문제로 인해 초기 설정에 어려움을 겪었습니다. 특히, 데이터베이스 마이그레이션 오류와 애플리케이션 실행 중 발생하는 치명적인 Segmentation Fault는 주요 해결 과제였습니다.

Solid Queue 설정의 첫 번째 난관은 잘못된 데이터베이스 마이그레이션 명령어 사용이었습니다. 문서에 언급된 rails db:migrate:queue 명령어는 더 이상 유효하지 않으며, Solid Queue 팀은 분리된 테이블 사용 시 효율성을 위해 rails db:schema:load:queue를 사용할 것을 권장하고 있었습니다. 이와 함께 database.yml 파일이 큐, 캐시, 케이블에 필요한 테이블을 지원하도록 올바르게 구성되었는지, 그리고 cable 설정이 adapter: solid_cable로 정확히 지정되었는지 확인하는 것이 중요했습니다.

이러한 초기 설정을 마친 후 ./bin/dev 명령어로 애플리케이션을 실행했을 때, macOS 환경에서 pg gem과 관련된 심각한 Segmentation Fault([BUG] Segmentation fault at 0x...) 오류가 발생했습니다. 이 문제는 다양한 pg gem 버전의 재컴파일 시도에도 불구하고 해결되지 않았으며, 결국 GitHub 이슈를 통해 해결책을 찾을 수 있었습니다.

해결책은 두 가지 핵심 변경 사항을 포함합니다. 첫째, 개발 환경에서 Solid Queue가 서버와 동일한 스레드에서 실행되도록 puma.rb 파일에 plugin :solid_queue if ENV["SOLID_QUEUE_IN_PUMA"] || Rails.env.development? 코드를 추가했습니다. 이 변경은 개발 환경에서의 충돌을 방지하는 데 기여했습니다. 둘째, macOS 환경에서 Solid Queue가 필요에 따라 올바르게 포크(fork)될 수 있도록 Procfileweb: env RUBY_DEBUG_OPEN=true OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES bin/rails server라는 ‘마법’ 매개변수를 추가했습니다. 특히 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES는 macOS 시스템에서 특정 라이브러리의 초기화와 포크 동작 간의 충돌을 방지하는 데 결정적인 역할을 했습니다. 이 두 가지 변경 사항을 적용한 결과, Solid Queue는 macOS 환경에서 완벽하게 작동하게 되었습니다.

결론

결론적으로, Rails 8 프로젝트에서 Solid Queue를 macOS에 성공적으로 배포하기 위해서는 데이터베이스 마이그레이션 명령어의 정확한 이해와 더불어, `puma.rb` 및 `Procfile`에 macOS 환경 특유의 포크 문제를 해결하기 위한 특정 설정을 적용하는 것이 필수적입니다. 본 문서는 Solid Queue 도입을 고려하는 개발자들이 직면할 수 있는 주요 문제점들을 명확히 제시하고, 검증된 해결책을 제공함으로써 안정적인 개발 환경 구축에 기여할 것입니다. 이러한 경험은 새로운 기술 스택 도입 시 발생할 수 있는 문서화의 부족과 환경적 특이성에 대한 심층적인 이해의 중요성을 강조합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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