Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

이모티콘의 힘을 사용하여 모든 Sidekiq 대기열을 지우는 방법

여기 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