여기 Honeybadge에서 우리는 Sidekiq를 많이 사용하며 훌륭합니다. 하지만 제가 자주 겪는 한 가지 문제가 있습니다.
...보시다시피, 저는 개발 중일 때 일반적으로 Sidekiq을 실행하지 않습니다. 그러나 수동 테스트 과정에서 많은 작업이 대기열에 추가됩니다. 그래서 다음에 할 Sidekiq를 실행하면 해당 작업을 모두 처리하려고 합니다. 좋지 않습니다.
하나의 Sidekiq 대기열에서 작업을 삭제하는 코드 조각을 쉽게 찾을 수 있습니다. 하지만 많은 대기열의. 나는 그들 모두에서 작업을 지우고 싶습니다. 조금 파고 든 후에 잘 작동하는 것 같은 답변을 찾았습니다. 보라!
# I originally had a more verbose piece of code here but mperham, Sidekiq's creator, set me straight :)
Sidekiq::Queue.all.each(&:clear)
더 직접적인 방법이 있지만 이 방법은 Sidekiq의 공개 API에 정의된 방법만 사용하므로 내부가 변경되더라도 계속 작동하기를 바랍니다.
이제 더 많은 이모티콘이 제공됩니다!
sidekiq 소스를 주의 깊게 읽으면 💣 이모티콘을 사용하여 clear 메서드를 호출할 수 있음을 알 수 있습니다. 농담이 아닙니다:
# https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/api.rb#L255
alias_method :💣, :clear
따라서 "모든 대기열 지우기" 코드를 다음과 같이 다시 작성할 수 있습니다.
Sidekiq::Stats.new.queues.each { |k, v| Sidekiq::Queue.new(k).💣 }
그리고 이모티콘이 너무 멋지기 때문에 대량 삭제를 수행하는 💀 방법을 직접 만들 수 있습니다.
def 💀
Sidekiq::Stats.new.queues.each { |queue_name, _| Sidekiq::Queue.new(queue_name).💣 }
end