Ruby 板


LINE

最近在写 rails 2.0, 一点零散的心得: 1. 靠 has_many :through 确实可以完成很多工作, 使得 conditions 可以少下很多。不过离我想像中的 OO 还有很长很长的一段路......(有时候听到一些 association 不 OO 的说法,就让我不知道该怎麽接话下去...) * 2. 用了一个取巧的方式使得我这边的程式不用同步对方 server 上的 model. 大致的问题在於如果我只单单 query 对方的资料, 会使得我这边的资料难以纪录,因为有很多额外资讯需要纪录。 目前的解法是做个类似 proxy 的东西。我原本是在想, 这东西应该要是一个 < ActiveRecord::Base 的东西, 还是 < MyModel 的东西?目前的作法是都不必, 他大概长这样: class Friend undef :id # make it fall through method_missing def initialize data @data = data @user = User.find :first, :conditions => ['remote_friends_id = ?', self.remote_friends_id] rescue nil end def method_missing msg @data[msg.to_s] || @user.send(msg) # rescue nil end end 这样一来,我就可以透过这个 Friend 取得之前用 open-uri 取得的远端资料,同时可以存取他在於本地端的资料, 也就是我需要额外纪录的资料,也不用做这份 friends 的同步动作。 * 3. mongrel 一次只能处理一个 request? 为了测试方便,我另外开了一个 controller 来产生伪造的资料。 於是我就在一个 request 中再丢出另外一个 request... 结果就 timeout 了 =_= 我很困惑,应该没写错什麽才对,才忽然想到 mongrel 好像只能处理一个 request. 我想事情是这样的: 1. request for a page 2. request for remote data 3. request for remote data 4. request for remote data 因为 1. 会产生 2~4, 然而 1 还没结束,所以 2~4 只是进去 mongrel 的 request queue... 2~4 都在等 1 处理完,但是 1 需要 2~4 的结果, 这样就卡死了 =_=b 另外开一个 mongrel, 开另外一个 port, 改成 request 那个 mongrel, 结果就没问题了..... 发现这件事的原因是 test 都能过,不懂为什麽 browser 就死 = =b 所以就想到可能是 server 造成的了。 有写 test 真的是能让开发变得顺利许多...... 不过事後再写意义也不大就是了,一定要先写或是中途写。 * 4. 我不是很懂何谓 REST, 每次看到一堆超长的描述就懒得看... 不过 respond_to 写起来真的是很爽,可以同时处理一大群的 output. 像是现在我写了这个: class ApplicationController < ActionController::Base before_filter :restful_response protected def restful_response template = "#{self.controller_name}/#{self.action_name}.xhtml.erb" respond_to{ |format| format.html{ render :template => template } format.xhtml format.xml{ render :template => template, :layout => false } } end end 这样我的 xhtml/html/xml 都可以使用同样的 template, 而 layout 则各自用各自的 layout. xhtml 就输出 XHTML 1.1, html 输出 XHTML 1.0 Transitional, xml 只输出单纯的内容,这个东西会交给 link_to_remote :update 使用: def menu_item title, url link_to_remote title, :update => 'content', :url => url.reverse_merge(:format => 'xml') end 除此之外,要支援 RSS 2.0 和 ATOM 1.0 也是很容易... 真好啊。 rails 1.2.x 的 rxml 真的太残废了..... 之前搞半天现在几行就好。 除此之外,还设定了 xhtml mime type: Mime::Type.register 'application/xhtml+xml', :xhtml 全面使用 XHTML 绝对是大有好处的 @@ HTML 的缺点实在是太多了...... (像是,哪里 tag 有 typo, browser 处理 HTML 都是容错, 然後就很容易搞不清楚错在哪?XHTML, browser 会报错,有 error message 啊!) (不过 IE 好像没有就是了?至少 firefox 2, safari 3, opera 9 都有...) 虽然说要把别人给我的 HTML 改写成 XHTML 实在非常费力, 但是改成的话後来不管做什麽都非常容易 :D (除了如果还要去 merge 新版 HTML 的 layout Orz, 这一样很费力) * 5. fixtures 不用再写 id 了。不过似乎不能产生完全空的 fixture, 这样我只好乱写一些属性了 @@ model unit test 不用再宣告 fixtures... controller functional test 也不用再写一堆设定,(原本要吗?) 大概就差 view 的 test 还没写吧...(这要怎麽写?) 有写 test 真的很有好处,至少对於有没有 bug 这件事会多很多信心 XD 不过也是这次比较不赶才在尝试新东西... * Ruby: 1.8.6.110 Rails: 2.0.1 Mongrel: 1.1.1 RubyGems: 0.9.5 OS: Mac OS X 10.4.11 编辑器:TextMate 1.5.5 Shell: fish 1.22.3 版本控制:SVK 2.0.2 资料库:MySQL 5.0.45(担心衔接问题,不然会用 PostgreSQL) output: XHTML 1.1 + XHTML 1.0 Transitional + XML (用 w3c validator 测试) 测试 browser: Safari 3.0.4 + Navigator 9.0.0.4 (fx 2.0.0.10 based) + Opera 9.24 如果方便的话我也想测 IE, 因为他最会捅篓子...(而且不吃 XHTML...) 之前还碰过 flash 是只有 IE 某些版本才会出问题,搞不懂为什麽... 希望 IE 8 快出来把可怕的 IE 6 都干掉 Orz --   『风车』が廻り続ける度に 『美しき』幻想が静かに纺がれ    『焔』の揺らめきの外に 『腕』を伸ばす愚かな者达 -《Roman》5th Story  『宝石』をより多く掴もうと 『朝と夜』の狭间を彷徨い続ける Track 10   『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の贤者 『贤者』が忌避する槛の中から 『伝言』の真意を彼等に问うだろう   『天使』が别れを告げし时 『地平线』は第五の物语を识る --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18 ※ 编辑: godfat 来自: 220.135.28.18 (12/12 00:55)
1F:推 ihower:in fact, xhtml is dead. html is future...:) 12/12 02:34
2F:→ godfat:why? any reference? 12/12 16:41







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP