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的时候,就可能有副作用。
小心,打扫卫生老奶奶走到你身边跟你说,”小伙子,小心栈溢出!”, 千万要当真!