锁定老帖子 主题:Try() 和 Maybe Monad
精华帖 (14) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-11
嗯,在active_support的whiny_nil.rb里对nil.id进行改写的:
class NilClass def id raise RuntimeError, "Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id", caller end end 我上面又犯了错误,既然它是raise RuntimeError,那么 nil.id rescue nil就应该是正常返回nil而不应报任何warning/error信息。 我们在生产环境下却遇到了warning且返回4的情况,是因为rails并不是在初始化时直接加载whiny_nil.rb,而是 require('active_support/whiny_nil') if configuration.whiny_nils development.rb和test.rb里都有: config.whiny_nils = true production.rb里没有配置,所以取: def default_whiny_nils false end 造成开发、测试环境跑的好好的程序到生产环境出错,所以inline rescue还是不能用,即使开发环境是正确的。 |
|
返回顶楼 | |
发表时间:2008-03-12
这个Maybe monad,好丑好丑
|
|
返回顶楼 | |