Skip to content

ActiveJob TypeError: can't iterate from ActiveSupport::TimeWithZone #2545

@maxim

Description

@maxim

Issue Description

Rails supports ActiveJob arguments to be a range of ActiveSupport::TimeWithZone objects, like (5.days.ago...1.day.ago).

However, Sentry tries to iterate it, which is not allowed.

TypeError: can't iterate from ActiveSupport::TimeWithZone
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-8.0.1/lib/active_support/core_ext/range/each.rb:19:in 'ActiveSupport::EachTimeWithZone#ensure_iteration_allowed'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/activesupport-8.0.1/lib/active_support/core_ext/range/each.rb:8:in 'ActiveSupport::EachTimeWithZone#each'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:85:in 'Enumerable#map'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:85:in 'Sentry::Rails::ActiveJobExtensions::SentryReporter.sentry_serialize_arguments'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:85:in 'block in Sentry::Rails::ActiveJobExtensions::SentryReporter.sentry_serialize_arguments'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:85:in 'Array#map'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:85:in 'Sentry::Rails::ActiveJobExtensions::SentryReporter.sentry_serialize_arguments'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:72:in 'Sentry::Rails::ActiveJobExtensions::SentryReporter.sentry_context'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:51:in 'block in Sentry::Rails::ActiveJobExtensions::SentryReporter.record'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-ruby-5.22.3/lib/sentry/hub.rb:59:in 'Sentry::Hub#with_scope'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-ruby-5.22.3/lib/sentry-ruby.rb:399:in 'Sentry.with_scope'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:26:in 'Sentry::Rails::ActiveJobExtensions::SentryReporter.record'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/sentry-rails-5.22.3/lib/sentry/rails/active_job.rb:10:in 'Sentry::Rails::ActiveJobExtensions#perform_now'
    /Users/max/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/activejob-8.0.1/lib/active_job/execution.rb:23:in 'ActiveJob::Execution::ClassMethods#perform_now'

Reproduction Steps

Run any ActiveJob passing a range like 5.days.ago...1.day.ago as an argument.

Expected Behavior

Sentry should be able to serialize a range of ActiveSupport::TimeWithZone.

Actual Behavior

Sentry errors-out when trying to serialize a range of ActiveSupport::TimeWithZone.

Ruby Version

3.4.1

SDK Version

5.22.3

Integration and Its Version

Rails 8.0.1

Sentry Config

No response

Metadata

Metadata

Assignees

Labels

No fields configured for issues without a type.

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions