成功的热部署应该是象 erlang 那样,用非共享的多实例切换来解决问题,但是对 ruby/java 这种对象化的语言来说,vm 实现通常是不支持内存隔离的,所以正确的方向应该是以进程或者主机为单位来切换
这个设计很欢乐
热部署在互联网领域是个伪命题,常见的真实需求实际上是“不间断服务”,楼主最好先和需求确定一下是否真的要支持热部署吧
可以从方法定义的角度来理解这件事,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
#8 楼 @zhaojiahui 看来楼主确实没有看懂,写成 blog 了 http://fsword.github.com/blog/2012/06/29/rubyzhong-de-self/
看双飞燕和 ruby 元编程就可以了,如果是看不明白,可以说具体的疑问,大家帮你解释
如果只有一个 rails 项目当然不用,不过真实的场景下,一个系统不会只有 web app 的 gitignore 有点明白了,它对 submodule 对应的目录不会做 check in,所以确实不用写
我不觉得自动填写 git commit 是个好主意,凡是能自动生成的注释都是没有价值的,这个规律并不只是在编码时有用
这个我也不知道,而且现在也不用 1.8 了...... Orz
最近刚升级到了 ubuntu 1204,老实说真的被惊喜了,主要是省电,原来是显示 3 个小时实际使用 2 个小时,现在升级后变成了显示 6 个小时实际使用 5 个小时,现在开会不担心没电了
and/or看起来不象||、&&、=这样的符号,所以优先级不同,不过具体使用时我们容易陷入程序员的思维定势,所以我基本不用 and/or
http 最大的问题是没有完整性校验,不过 git 正好克服了这个问题
#18 楼 @jialezhang 对初学者来说,理解清楚下面几个基本概念会对学习有帮助的:当前工作目录、环境变量、命令行参数、进程的标准输出/标准错误、进程的返回值 在计算机上做的任何事都可以问问自己上面的名词在这里指什么,不管学习什么语言,我都建议弄清楚这些知识
#9 楼 @jialezhang 执行一个脚本时可以携带参数,这个 ARGV 就是你在脚本中使用参数的方法
~ $ cat a.rb
puts ARGV
puts ARGV.length
~ $ ruby a.rb a b c
a
b
c
3