`
pingfeng
  • 浏览: 57902 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 

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

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics