getsentry / sentry-ruby

Sentry SDK for Ruby
https://sentry.io/for/ruby
MIT License
927 stars 493 forks source link

Enable setting Cron monitor name #2290

Open sethherr opened 5 months ago

sethherr commented 5 months ago

Cron monitors created via Ruby use the slug as the name, and there isn't a way to programatically set the name.

There should be a way to set the name in sentry_monitor_check_ins via the monitor_config.

And ideally, the name should be the name of the class by default (rather than the slug)

Why do you think it's beneficial to most of the users

Slugs are much less readable, because they're only lower case, than the job name.

We've gone through and updated the Cron monitor names to be the job names in Sentry - but having to do that seems unreasonable.

Possible implementation

I don't know what the server API is like, but maybe this can just be added to the Sentry::Cron::MonitorCheckIns sentry_monitor_check_ins method?

def sentry_monitor_check_ins(slug: nil, monitor_config: nil)
  name = monitor_config&.dig(:name) || self.name

  if monitor_config && Sentry.configuration
    cron_config = Sentry.configuration.cron
    monitor_config.checkin_margin ||= cron_config.default_checkin_margin
    monitor_config.max_runtime ||= cron_config.default_max_runtime
    monitor_config.timezone ||= cron_config.default_timezone
  end

  @sentry_monitor_slug = slug
  @sentry_monitor_name = name
  @sentry_monitor_config = monitor_config

  prepend Patch
end