Есть ли параметр для PhusionPassenger.on_event, который будет действовать для after_fork? вместо: start_worker_process
Я бы хотел, чтобы обезьяна исправила класс и метод контроллеров рельсов и моделей, которые работают в пассажирском режиме. Проблема в том, что рельсы будут перезагружаться, если рельсы заметили обновления в классе или контроллере и модели, в то время как пассажир создает новый процесс, который доставляет мне трудности, так как обезьяна пропатчила классы, где сброс на исходный.
Есть ли способ, как это сделать?
Вот мой пример кода;
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
require 'path/monkeypatched_script'
end
end
Внутри monkeypatched_script находится мой скрипт, в котором я попытался обезьяньей заплатить класс и метод.
Когда я запускаю свое приложение, оно генерирует 3 процесса. Первые 2 процесса
require 'path / monkeypatched_script' работает хорошо, однако в 3-м процессе require 'path / monkeypatched_script' не выполнялся.
вернемся к моему вопросу, если есть другой параметр, кроме: initial_worker_process, который будет действовать для after_fork.
Вот скрипт обезьяньего патча;
Article.class_eval do
alias :reduce_str_without_apm :reduce_str
def reduce_str(*args, &block)
return reduce_str_without_apm(*args, &block) unless RubyAPM.current_transaction
name = "Custom Instrument"
type = "Article#reduce_str"
ctx = Span::Context.new( CATEGORY: 'Ruby' )
req = reduce_str_without_apm(*args, &block)
RubyAPM.span name, type, context: ctx do
req
end
end
end
Цель - извлечь данные, отслеживать производительность класса / метода и добавить их в журналы