Ruby on rails 如何在PhusionPassenger.on_事件()上的fork之后插入代码
PhusionPassenger.on_事件是否有一个参数将用于after_fork?而不是:启动\u worker\u进程 我想介绍一下运行在passenger中的rails控制器和模型的monkey补丁类和方法。问题是,如果rails注意到类或控制器和模型中有更新,rails将重新加载,而乘客创建了新的过程,这给了我一段艰难的时间,因为猴子修补了类,并重置为原始 有办法吗 这是我的示例代码Ruby on rails 如何在PhusionPassenger.on_事件()上的fork之后插入代码,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 5,PhusionPassenger.on_事件是否有一个参数将用于after_fork?而不是:启动\u worker\u进程 我想介绍一下运行在passenger中的rails控制器和模型的monkey补丁类和方法。问题是,如果rails注意到类或控制器和模型中有更新,rails将重新加载,而乘客创建了新的过程,这给了我一段艰难的时间,因为猴子修补了类,并重置为原始 有办法吗 这是我的示例代码 if defined?(PhusionPassenger) PhusionPassenger.on
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
require 'path/monkeypatched_script'
end
end
在monkeypatched_脚本中是我的脚本,我试图在其中对类和方法进行猴子补丁
当我运行应用程序时,它会生成3个进程。前两个过程
require'path/monkeypatched_script'性能良好,但在第三个过程中,require'path/monkeypatched_script'没有执行
回到我的问题上来,是否还有另外一个参数:启动将作为after\u fork的\u worker\u进程
这是猴子补丁的脚本
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
其目的是获取数据、监控类/方法性能并将其添加到日志中monkey补丁代码在哪里?你能举一个你试过的代码的例子吗?请看我编辑的Hello,并尽我所能解释更多细节。现在还不清楚你的猴子补丁在做什么,或者你为什么需要它。但这种设计模式似乎有缺陷。处理分叉的代码在哪里?是什么?您使用的是什么模式?standalone、apache或nginx?我使用的模式是standalone。例如,我从控制器/模型中修补了一个方法,添加了一些字符串显示。我还没有将处理分叉的代码,因为我目前拥有的是属于控制器/模型的monkey patch方法代码。我不知道on_事件的哪一部分,或者是否有我上面提到的另一个参数,以及将fork代码放在哪里