我在Rails应用程序中有两个sidekiq工人,我想知道在他们之间共享代码的最佳方法是什么。
class PriceReminderWorker
include Sidekiq::Worker
sidekiq_options queue: 'price_alerts'
def method_to_share
stuff
end
end
和
class PriceNotificationWorker
include Sidekiq::Worker
sidekiq_options queue: 'price_alerts'
def method_to_share
stuff
end
end
“ rails / ruby way”是从父类继承还是添加新模块?
答案 0 :(得分:1)
如果您认为PriceReminderWorker
和PriceNotificationWorker
都是PriceWorker
的话,我会使用继承,而您想要共享的方法在{{1} }上下文。例如,在Rails中,所有模型都是PriceWorker
如果您要共享的方法仅利用了两个类共享的一些共同“特征”,我将在模块中包含这些方法。例如,在Ruby中,Array类和Hash类都共享一个“特征”,它们都实现了一个ApplicationRecord
方法,该方法可以接受一个块并为其集合的每个成员调用该块。在这种情况下,两个类都包含foreach
模块。
答案 1 :(得分:0)
您可以将共享方法放在模块中,然后将它们包含在工作程序类中。
module Workify
def method_to_share
puts "hooray we're DRY!"
end
end
class PriceReminderWorker
include Sidekiq::Worker
sidekiq_options queue: 'price_alerts'
end
class PriceNotificationWorker
include Sidekiq::Worker
sidekiq_options queue: 'price_alerts'
end
两个工作程序类现在都可以访问模块中定义的方法。