File: remove_active_job_execute_callback.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (27 lines) | stat: -rw-r--r-- 976 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# frozen_string_literal: true

return unless Rails.env.test?

Rails.application.configure do
  config.after_initialize do
    # We don't care about ActiveJob reloading the code in test env as we run
    # jobs inline in test env.
    # So in test, we remove this callback, which calls app.reloader.wrap, and
    # ultimately calls FileUpdateChecker#updated? which is slow on macOS
    #
    # https://github.com/rails/rails/blob/6-0-stable/activejob/lib/active_job/railtie.rb#L39-L46
    def active_job_railtie_callback?
      callbacks = ActiveJob::Callbacks.singleton_class.__callbacks[:execute]

      callbacks &&
        callbacks.send(:chain).size == 1 &&
        callbacks.first.kind == :around &&
        callbacks.first.filter.is_a?(Proc) &&
        callbacks.first.filter.source_location.first.ends_with?('lib/active_job/railtie.rb')
    end

    if active_job_railtie_callback?
      ActiveJob::Callbacks.singleton_class.reset_callbacks(:execute)
    end
  end
end