不停机系统,小心 alias_method_chain的重入!小心所有重入!
ruby动态语言可以做到不停机系统,就是升级部署不断服务!这是多么美好,像静态语言是做不到这一点。
?
要实现这一美妙、强大能力之前,要小心所以重入。在实践中发现一个bug,由重入造成的死循环!
?
def to_json_with_children(options={}) push_children_objects to_json_without_children(options) # to_json(options) end alias_method_chain :to_json, :children ?
上面代码两次重入,就会死循环,最后栈溢出!有趣吧,打扫卫生老奶奶走到你身边跟你说,”小伙子,小心栈溢出!“不是玩笑,做程序员真是要小心!
?
alias_method这类方法都要防止重入!即类的动态性状态(ruby),和类状态不在本类中,那么重新load的时候,就可能有副作用。
?
小心,打扫卫生老奶奶走到你身边跟你说,”小伙子,小心栈溢出!”,?千万要当真!
?
?
?