custom benchmarking - problems monkey patching perform_action_with_benchmark

I would like to override ActionController::Benchmarking.perform_action_with_benchmark method so that custom application-layer information is logged alongside render and DB times in the production.log. I've tried monkey-patching, but for some reason, it doesn't seem to work. I can define new methods in the ActionController::Benchmarking, but if I override perform_action_with_benchmark my changes are ignored.

Here's what I've got in vendor/plugins/benchmark_enhancements/lib/benchmark_enhancements.rb:

module ActionController #:nodoc:   module Benchmarking #:nodoc:     def perform_action_with_benchmark       unless logger         perform_action_without_benchmark       else         runtime = [Benchmark::measure{ perform_action_without_benchmark }.real, 0.0001].max         log_message = "Completed in #{sprintf("%.5f", runtime)} (#{(1 / runtime).floor} reqs/sec)"         log_message << rendering_runtime(runtime) if @rendering_runtime         log_message << active_record_runtime(runtime) if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?         log_message << custom_runtime(runtime)         log_message << " | #{headers["Status"]}"         log_message << " [#{complete_request_uri rescue "unknown"}]"         logger.info(log_message)       end     end

    def custom_runtime(runtime)       " | Custom: #{sprintf("%.5f", rand)}"     end   end end

I can verify that custom_runtime exists, so the file is being read, but it never gets invoked. It works if I edit the gem version of benchmark.rb, but it doesn't work if I monkey patch under vendor/plugins.

Any ideas?