读书人

不住机系统小心 alias_method_chain

发布时间: 2012-12-23 11:28:15 作者: rapoo

不停机系统,小心 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的时候,就可能有副作用。

?

小心,打扫卫生老奶奶走到你身边跟你说,”小伙子,小心栈溢出!”,?千万要当真!

?

?

?

读书人网 >网络基础

热点推荐