作者godfat (godfat 真常)
看板Ruby
标题Re: [心得] rails 2.3.3 是地雷?
时间Tue Aug 25 15:30:05 2009
※ 引述《godfat (godfat 真常)》之铭言:
: 虽然看到有几个灾情,我还是决定更新了
: 跑了一阵子之後,session 爆炸,居然每次 refresh 都会变另一个人...
: 切回 2.3.2 後恢复正常了
: memcache: 异常
: database: 异常
: cookie: 根本无法正常启动 rails
: 我懒得花时间追踪了,有人升级 rails 2.3.3 吗?
我在换了另一样东西後,发生一样的事情...
於是开始追踪原因,因为可能不是 rails 的问题。
没想到一 log 就看到原因了:
visitor_id = session[:cas_extra_attributes]['old_uid'] # what the hell?
我在最後注解 what the hell 是因为,传进去的 key 明明就是 OldUID,
在 2.2.o 还是 2.o.o 的时候,就是写 OldUID 就抓得到。
结果升级之後,烂掉,变成要写成 old_uid. 抓到这个问题,让我很火大。
所以才注解那段在那里... 真的拜托不要乱动我的 key 啊。
现在我换了另一样东西,OldUID 已经改成 id 了,因此出现一样的状况。
也就是说,visitor_id 变成 nil. 接着後面就是:
user = User.new
user.id = visitor_id
# ... #
user.save
这边 user.id 是 nil, 然後又 save, 就变成 auto_increment,
自动取得了一个 id, 然後又用这个 id 去其他 server 查询,
就会找到另一个已经存在的 user, 所以就变身了!
我猜 rails 2.3.3 大概就是把 session key 自动转 key 拿掉了吧...
因此我的 session 又烂了。这边需要注意的是,我不应该让 id 是 nil 时,
也继续跑程式。这样在 rails 乱改的情况下,至少不会造成 session 乱跳。
--
#!/usr/bin/env ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》
# if a
dog nailed
extra legs that
http://webptt.com/cn.aspx?n=bbs/Ruby/index.html
#
walks like an octopus, and Welcome ~
Ruby@ptt~
#
talks like an octopus, then
◢█◣ http://www.ruby-lang.org/
# we are happy to treat it as
█ http://www.ruby-doc.org/
# if it were
an octopus.
◥ ◤ http://www.rubyforge.org/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.128.121.85
1F:推 dryman:2.3.3不能跑geo-kit plugin 08/25 18:46