Methods

Class Public methods

new(number, url)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 7
        def initialize(number, url)
          @id = SecureRandom.uuid
          @number = number
          @url = url
          @setup_exception = nil
        end
🔎 See on GitHub

Instance Public methods

after_fork()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 80
        def after_fork
          Parallelization.after_fork_hooks.each do |cb|
            cb.call(@number)
          end
        end
🔎 See on GitHub

perform_job(job)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 42
        def perform_job(job)
          klass    = job[0]
          method   = job[1]
          reporter = job[2]

          set_process_title("#{klass}##{method}")

          result = klass.with_info_handler reporter do
            Minitest.run_one_method(klass, method)
          end

          safe_record(reporter, result)
        end
🔎 See on GitHub

run_cleanup()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 86
        def run_cleanup
          Parallelization.run_cleanup_hooks.each do |cb|
            cb.call(@number)
          end
        end
🔎 See on GitHub

safe_record(reporter, result)

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 56
        def safe_record(reporter, result)
          add_setup_exception(result) if @setup_exception

          begin
            @queue.record(reporter, result)
          rescue DRb::DRbConnError
            result.failures.map! do |failure|
              if failure.respond_to?(:error)
                # minitest >5.14.0
                error = DRb::DRbRemoteError.new(failure.error)
              else
                error = DRb::DRbRemoteError.new(failure.exception)
              end
              Minitest::UnexpectedError.new(error)
            end
            @queue.record(reporter, result)
          rescue Interrupt
            @queue.interrupt
            raise
          end

          set_process_title("(idle)")
        end
🔎 See on GitHub

start()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 14
        def start
          fork do
            set_process_title("(starting)")

            DRb.stop_service

            @queue = DRbObject.new_with_uri(@url)
            @queue.start_worker(@id)

            begin
              after_fork
            rescue => @setup_exception; end

            work_from_queue
          ensure
            set_process_title("(stopping)")

            run_cleanup
            @queue.stop_worker(@id)
          end
        end
🔎 See on GitHub

work_from_queue()

📝 Source code
# File activesupport/lib/active_support/testing/parallelization/worker.rb, line 36
        def work_from_queue
          while job = @queue.pop
            perform_job(job)
          end
        end
🔎 See on GitHub