• 成功的热部署应该是象 erlang 那样,用非共享的多实例切换来解决问题,但是对 ruby/java 这种对象化的语言来说,vm 实现通常是不支持内存隔离的,所以正确的方向应该是以进程或者主机为单位来切换

  • #10 楼 @xds2000 这个不太熟悉,不过我曾经和别人讨论过这种场景,直觉上,PaaS 更加互联网,所以应该更不需要热部署这种东西。比如你可以提供个用户的是某种部署平台实例,它是从实例池取出来的,那么用户需要进行升级的时候只要在实例池中重新取出一个,然后部署好就行了,PaaS 所要做的只是前端机切换,服务并不中断

  • #6 楼 @xds2000 这个描述很细节了,更象解决方案而不是问题本身啊。这么说吧,你们的 rails(单机或者集群)一共有几个进程?在不中断服务的前提下依次重启这些进程能否满足要求?

  • #4 楼 @xds2000 你的用户是怎么描述“热部署”这个名词的?如果他说“和 jboss 一样”,那我认为需求并没有被明确,因为用户的最终目的显然并不是做一款 ruby 版的 jboss,这种说法更象是个 how to do,而你们需要明确的是 what to do —— 用户希望解决什么实际问题?

  • Alternative join and split in Ruby at 2012年07月02日

    这个设计很欢乐

  • 热部署在互联网领域是个伪命题,常见的真实需求实际上是“不间断服务”,楼主最好先和需求确定一下是否真的要支持热部署吧

  • 可以从方法定义的角度来理解这件事,def 一个 method(无论是用 def 关键字还是用 define_method ) 时,ruby 会判断此时的 receiver 是否是一个 class,如果是,则 method 放在这个 class 上,否则(即 receiver 是一个普通的 object)method 就要放在这个 object 的 eigen class 上,that all

  • 没注意又翻到了这个帖子,补充一下:class_eval 和 instance_eval 的一个重要区别是前者的 current class 是 receiver,而后者的 current class 是 receiver 的 eigen class

  • 关于 ruby 当中的 self at 2012年06月29日

    #8 楼 @zhaojiahui 看来楼主确实没有看懂,写成 blog 了 http://fsword.github.com/blog/2012/06/29/rubyzhong-de-self/

  • #6 楼 @leomao10 很简单,没有 ruby 的地方

  • 关于 ruby 当中的 self at 2012年06月28日

    看双飞燕和 ruby 元编程就可以了,如果是看不明白,可以说具体的疑问,大家帮你解释

  • 如果只有一个 rails 项目当然不用,不过真实的场景下,一个系统不会只有 web app 的 gitignore 有点明白了,它对 submodule 对应的目录不会做 check in,所以确实不用写

  • 求一个 git commit 懒人工具 at 2012年06月26日

    我不觉得自动填写 git commit 是个好主意,凡是能自动生成的注释都是没有价值的,这个规律并不只是在编码时有用

  • 1.8.7 害死人 at 2012年06月25日

    这个我也不知道,而且现在也不用 1.8 了...... Orz

  • and 和 && 是不同的 at 2012年06月24日

    #21 楼 @zw963 之前的表述有误,这是我个人为了便于记忆而做的解释,实际为什么这么设计我也不清楚

  • #69 楼 @azhao 我也不知道为什么,这个结果太明显了,就算对比次数有限,省电的趋势是可以确定的

  • 最近刚升级到了 ubuntu 1204,老实说真的被惊喜了,主要是省电,原来是显示 3 个小时实际使用 2 个小时,现在升级后变成了显示 6 个小时实际使用 5 个小时,现在开会不担心没电了

  • and 和 && 是不同的 at 2012年06月20日

    and/or看起来不象||、&&、=这样的符号,所以优先级不同,不过具体使用时我们容易陷入程序员的思维定势,所以我基本不用 and/or

  • Smart HTTP Protocal Internals at 2012年06月20日

    #21 楼 @bhuztez nginx 的这个“添加模块也要重新编译”的特点可能是出于性能方面的考虑。这事见仁见智,如果部署和配置管理很强,那么这些问题无非就是一个配置项,如果没有条件做这些基础设施,同时对性能不敏感,那么可以用 apache 甚至直接用基于 ruby rack 的 web server,那也不是不行

  • Smart HTTP Protocal Internals at 2012年06月19日

    #12 楼 @bhuztez 你说的情况也存在,不过如果开发者本身技术不过关,用什么都一样。我觉得 ruby 社区有两个特点,一个是比较 nice,但是另外也很推崇做事的专业性

  • Smart HTTP Protocal Internals at 2012年06月19日

    http 最大的问题是没有完整性校验,不过 git 正好克服了这个问题

  • Smart HTTP Protocal Internals at 2012年06月19日

    #9 楼 @bhuztez 这个假设对于要做服务的人有些捉襟见肘了,而如果仅仅是开发环境,你又何必惧怕 nginx 上放的太开呢? 退一万步,如果想用一台机器先顶着,逐渐提高服务水平,还可以在 nginx 上分出不同的端口、domain 等等

  • File.open 等若干 File 的操作 at 2012年06月19日

    #18 楼 @jialezhang 对初学者来说,理解清楚下面几个基本概念会对学习有帮助的:当前工作目录、环境变量、命令行参数、进程的标准输出/标准错误、进程的返回值 在计算机上做的任何事都可以问问自己上面的名词在这里指什么,不管学习什么语言,我都建议弄清楚这些知识

  • Smart HTTP Protocal Internals at 2012年06月19日

    #7 楼 @bhuztez 这个“一般”太不靠谱了,git server 肯定应该独立于其它 webapp 来搭建,在这个前提下,盲目设置一个最大上传大小是有些僵化思维的味道了

  • File.open 等若干 File 的操作 at 2012年06月19日

    #9 楼 @jialezhang 执行一个脚本时可以携带参数,这个 ARGV 就是你在脚本中使用参数的方法

    ~ $ cat a.rb
    puts ARGV
    puts ARGV.length
    ~ $ ruby a.rb a b c
    a
    b
    c
    3
    
  • Smart HTTP Protocal Internals at 2012年06月19日

    #4 楼 @bhuztez 上传大小不是 http 协议自身的缺点

  • #8 楼 @jjym irb 的结构也挺复杂,我大概翻了一下,应该和系统钩子的相关代码无关,另外如果把 p 改为 puts 就可以正常退出了,怀疑是对别名进行解析的时候建立了新的类,然后就错了。 但是我不能理解的是,如果不创建新类自然没事,如果要创建新类,为什么又没有无限递归呢?

  • #3 楼 @sectic 是的