I was helping a friend implement watchdog notifications, and noticed that, unlike sd_watchdog_enabled(3), this gem doesn’t have a way to get the configured watchdog interval. Instead, pretty much every Ruby gem or app I’ve seen use this has to implement the same pattern:
def do_watchdog
return unless SdNotify.watchdog?
# Divide by 1,000,000 since 99% of Ruby tooling uses seconds, not microseconds.
interval = Integer(ENV.fetch('WATCHDOG_USEC')) / 1_000_000.0
loop do
SdNotify.watchdog
sleep interval
end
end
It would be much more convenient (and require less digging around to learn the environment variables) if this gem exposed a method to get the watchdog interval:
def do_watchdog
return unless SdNotify.watchdog?
loop do
SdNotify.watchdog
sleep SdNotify.watchdog_interval
end
end
Ideally, I think this would:
Return 0 (or maybe -1?) if the watchdog is not expecting notifications (that is, if SdNotify.watchdog? would have returned false).
Return the number of seconds as a float instead of the number of microseconds as an integer, since almost all use cases will involve doing this anyway.
I was helping a friend implement watchdog notifications, and noticed that, unlike
sd_watchdog_enabled(3)
, this gem doesn’t have a way to get the configured watchdog interval. Instead, pretty much every Ruby gem or app I’ve seen use this has to implement the same pattern:It would be much more convenient (and require less digging around to learn the environment variables) if this gem exposed a method to get the watchdog interval:
Ideally, I think this would:
Return 0 (or maybe -1?) if the watchdog is not expecting notifications (that is, if
SdNotify.watchdog?
would have returned false).Return the number of seconds as a float instead of the number of microseconds as an integer, since almost all use cases will involve doing this anyway.