我们的大神 @jan 终于上节目了,夜深人静的时候跪着听。
你是怎么挖出来的啊?估计晚点会发出官方公告吧,还不知道增加了哪些特性,不过这几年的 Ruby 版本兼容性做的不错,可以放心大胆的升级。
EM 负责处理并发请求,job 任务是通过 Celluloid
去执行的,Celluloid 本质是用线程池实现的。
#12 楼 @hxh1246996371 到期了就换。
赞 DHH 大神,以及祝贺 RailsCasts China 终于更新了。 距离 RailsCasts China 上一次发布视频,已经两年过去了,而 RailsCasts 则两年半没有发布新视频了。 让人追忆逝去的时光~~~
#14 楼 @jimrokliu 当 model 发送 commit 指令,MySQL 执行之后,才会返回 id,在发送之前是拿不到的,这是否说明 COMMIT 已经被 MySQL 执行了?
#12 楼 @jimrokliu 不存在 model 写入太慢这种情况,如果是支持事务的数据库,只有在 SQL 执行完 COMMIT 后,才会触发 after_commit 的 callback,楼主的问题我觉得不可能是 after_commit 的问题,或者只有见到代码,或者在实际项目中深入分析才能找到原因。
杭州好可怜啊~~
能不能给出 sidekiq 执行太快,after_commit 之后依然找不到对象的内容的 URL,我想围观一下。
#4 楼 @sennmac 我随便搜了一个例子,是 module_function 的一个应用场景,刚刚仔细看了一下,发现这个例子不太合适。换个 Sinatra 中的 Delegator 的实现,主要是证明在 module 中定义类方法并不是没用,而是很有用,具体取决于场景。
https://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1976
:plus1: 期待 Part 3,如果发布的时候,可以直接附加到这个帖上作为一个整体么?
#2 楼 @sennmac module 中定义类方法是有用的,不是说无法被类 include 并当作类的类方法用,在 module 中定义类方法就不符合"规范"。
随便搜了一个例子,也许不能说明实际问题 https://gist.github.com/sshaw/53c27b148e903a07e494
请问从楼主的角度,能否给出不要把类方法定义在模块中的理由呢?
首先模块中允许定义类方法,且在很多场景下就应该这么干,例子到处都是(其实我觉得不应该叫类方法,而应该叫静态方法,或者 static method 感觉更合适,至少 ES6,Swift 都是这样叫的)
除了在模块中用 self.method_name
来定义之外,还有很多种办法达到同样的结果。
module A
extend self
def a
puts 'a'
end
end
还有
module A
def a
puts 'a'
end
module_function :a
end
#6 楼 @rainuxluo 你现在在七牛工作嘛?好久没有你的消息了。
\x80\u3042
是 encoding string,就是一种以字符编码,而非字符本身来表示的 String。
\u3042
是 unicode 编码,表示一个以 unicode 编码的字符。
\x80
是一个 hex 的编码,转换成 10 进制表示 128,即在字符编码表中第 128 位。刚刚好超过了 ASCII 规定的 0~127 个字符,所以这里 \x80
表示一个非 ASCII 字符,在不同编码下可以代表不同的字符。
我觉得这里用 \x80
只是为了证明 Ruby 的默认字符编码 UTF-8,且占用两个字节,即使是所有非 ASCII,但是又不知道具体什么编码的字符也是一样。