作者godfat (godfat 真常)
看板Ruby
标题[RoR ] Active Scaffold Upload Branch
时间Sat Jul 28 01:40:04 2007
我真的被 rails plugin 吓到了。这几天试着做 web development,
大家应该都知道我跟这个领域不太熟吧?可是,忽然间我觉得,这样几乎什麽都能做了。
三个 plugin, 依照我尝试的时间顺序:
1. FileColumn
http://www.kanthak.net/opensource/file_column/
2. LoginGenerator
http://wiki.rubyonrails.org/rails/pages/LoginGenerator
3. Active Scaffold Upload Branch
http://wiki.activescaffold.com/wiki/show/Active+Scaffold+Upload+Branch
由於一开始使用 FileColumn 碰到了点问题,所以我有稍微 trace 他的 code,
基本上这个 plugin 我觉得算是小玩具,很简单的小功能,居然没内建到 rails 中
我觉得有点奇怪。毕竟 binary file 一般都是存到 file system 而非 db 中吧?
搭配 rmagick 的感觉还算不错,可惜 helper 似乎不太健全,虽然堪用了。
接下来碰到需要 auth 的部份,懒得自己写,因为只是小地方需要,并不真正属於
我目前所要写的东西的一部份。重新发明轮子我觉得不是问题,但如果只是想到旁边的
便利商店买罐饮料却因此得重新发明轮子,呃,这是成本考量与优先序的问题啊。
於是试了一下 LoginGenerator, 发现﹍。嗯,还真的是很方便。虽然他是个 gem,
但是 generate 出来之後就没有 dependency 了,而且要自己改什麽也都很容易。
於是 auth 的部份也解决了,毕竟我只是要最简单的 auth.
(虽然他安全性做得如何我就不清楚了,没有仔细看他的程式码)
到这里,我都还不觉得怎麽样。第三个 ActiveScaffold 就真的吓到我了。
因为那真的是非常完整的实做。rails 内建的 scaffold 实在阳春过头,
(尽管阳春过头了,第一次看到还是着实相当惊艳,现在有种乡巴佬进城的感觉)
除非是最简单的资料,不然碰上 association 或是 file column,
全部都没办法应付。当然,我是可以自己去改自己去扩充,但同样是成本与
优先序的问题,一定得需要用别人的东西。
先是找到了 scaffold extensions, 其实我是比较欣赏这种模式。不要产生一堆
程式码,要改什麽,利用 ruby 的 dynamic 机制就好了。只是他文件实在不多,
看来看去要扩充好像还满有难度的,而且虽然号称支援 association, 却是﹍。
我只能说真的很难用,不过是多个 link 出来罢了,是比没有好啦,但是应该会边用
边想打人吧?
接下来我乾脆直接 google file column + scaffold 算了。就找到了
Active Scaffold Upload Branch, which is evolved from ajax scaffold.
他的 file column 范例,呃,问题一大堆,有些根本就写错了,害我试半天试不出来,
有点火大。想说调查一下他的 form 到底是怎麽回事,却发现他居然整个是用 ajax
写的,所以 rails 有错误不见得会回传,而且 form 也因为动态产生而无法显示!
幸好有 firefox 的 web developer 这个 add-on, 装了很久却很少在用,
带有侥幸的心情找了一下,发现他的 display 功能非常强大,举凡页面上出得来的,
全部都能显示。然後才发现,active scaffold 额外产生了一个 record 去存,
这样的话下面这一行就明显不正确了!
<%= file_column_field 'entry', 'file' %>
我还是头一次看到范例有这麽严重错误的,太相信他结果找错误找半天。:(
害我又一直怀疑到 file column 和 rmagick 上,看半天觉得应该没错才对。
而且这一个 method 也不知道是干嘛的:
def file_form_column(record, input_name)
file_column_field 'record', :file
end
不是明明就有 partial 了吗?还是这可以取代 partial? 存疑,不管了。
总而言之,现在不只是 file column 的 image upload 没问题,
要自订栏位也没问题,版面上又相当漂亮,不会因为拉扯而变形,排序、搜寻等等,
也都相当不错。最重要的是,他的 association 模式跟我所需要的几乎完全一致!
可以同步修改,可以隐藏,可以追加,所有基本功能似乎都有了。
本来昏昏欲睡的我,看到这边实在是很兴奋,这东西就算要直接拿来用,都够格了。
而且我相信有什麽不足的话,要修改也容易得很。这有一大半要感谢 Ruby :)
老实讲,我真想知道硬干派的 php programmer 看到这些会有什麽想法。
一个 phpBB 我看随便写一写说不定就跑出来了﹍。搞不好再过不久,
写网站就真的是只要呼叫 => 修改 => 呼叫 => 修改就结束了。
这还真的是很恐怖的一件事。不过同时这也代表着,我们应该把眼光放远点了。
来做个 YouOS 吧!! XD
==
最後我还想讲一件事,就是写程式写这麽久,从来没碰过几次时程预估是太长的。
但写 rails 这两次,很明显我都估太长了。而且缩短的程度也是非常的多!
我想除了要感谢 library 的强大外,虽然我还没引进 unit test, 只用了
人工 test, debug 难度就已经没有很高了,大部份的错误都不会很难抓。
当然,这有一个很大的原因是我现在在写的东西难度很低,可是在这麽不熟悉的
情况下,我觉得能够这样就真的是非常厉害的了。
另一方面其实我是觉得写 Flash 有趣得多,难度也高得多。但 Flash debug
真的是会让人想抓狂的一件事﹍。不知道有没有什麽好用的 debug tool?
不然写 Flash 永远进度落後实在是很烦。
==
script/plugin install \
http://opensvn.csie.org/rails_file_column/plugins/file_column/trunk
gem install login_generator
script/generate login
svn export
http://activescaffold.googlecode.com/svn/branches/upload \
vendor/plugins/active_scaffold_upload
有时候真不知道用 rubygems 好还是 rails plugin 好,但我想比较不稳定的东西,
用後者应该是会好很多吧?self contained 这种事,有时候还满重要的。
乡巴佬全文完。
2007.07.28
作者: godfat 真常 在 7/28/2007 01:23:00 上午
--
By Gamers, For Gamers - from the past Interplay
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
1F:推 shelary:Active Scaffold前面文章就有人推荐了..真的很漂亮.. 07/28 02:27
2F:推 bypang:旧的版本叫做Ajax Scaffold,是generator版本 07/28 16:48