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)될 수 있도록 Procfile
에 web: env RUBY_DEBUG_OPEN=true OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES bin/rails server
라는 ‘마법’ 매개변수를 추가했습니다. 특히 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
는 macOS 시스템에서 특정 라이브러리의 초기화와 포크 동작 간의 충돌을 방지하는 데 결정적인 역할을 했습니다. 이 두 가지 변경 사항을 적용한 결과, Solid Queue는 macOS 환경에서 완벽하게 작동하게 되었습니다.