我真的被 rails plugin 嚇到了。這幾天試著做 web development, 大家應該都知道我跟這個領域不太熟吧?可是,忽然間我覺得,這樣幾乎什麼都能做了。三個 plugin, 依照我嘗試的時間順序:
1.
FileColumn2.
LoginGenerator3.
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
分享到:
相关推荐
Laravel开发-scaffold Laravel脚手架。
drupal-scaffold, 使用 Drupal/core更新 Drupal scaffold文件的Composer插件 scaffold ( 比如 index.php update.php 。) 插件,用于自动下载Drupal脚本文件,通过编写器使用 drupal/core 。建议在 root root的项目的...
微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-...
scaffold开源项目(SpringBoot、MyBatis、Shiro、Druid、Beetl 、Ehcache+Bootstrap、jQuery、layer、zTree )
Scaffold asp.net mvc中文教程可实现。按着做肯定能完成,是VS2010版本哦。如果出现错误,可按照错误提示安装POWERSHELL2.0,NUGET1.5
开源项目-kshvmdn-scaffold.zip,Scaffold full directories with text-based structure files.
Laravel开发-laravel-scaffold-generate Laravel5积垢发生器
Laravel开发-reverse-scaffold-generator Laravel积垢反脚手架发电机
Laravel开发-laravel5-scaffold Laravel 5 API/脚手架/积垢发生器
安装您至少需要ActiveScaffold 3.x才能使用它,并需要Rails 4.x gem install active_scaffold_sortable用法步骤1 使用名为“ position”的列创建模型: # app/models/entry.rb# id integer# title string(255)# ...
Laravel开发-laravel-scaffold-admin 为管理CRUD生成脚手架的命令。
l10n-simplified-with-scaffold plugin files 博文链接:https://cvu.iteye.com/blog/88081
mix App
python库,解压后可用。 资源全名:lk_qtquick_scaffold-1.1.0-py3-none-any.whl
XCX-scaffold-master.zip小程序精选源码
Flutter Scaffold。
(微信小程序毕业设计)XCX-scaffold-master(源码+截图)(微信小程序毕业设计)XCX-scaffold-master(源码+截图)(微信小程序毕业设计)XCX-scaffold-master(源码+截图)(微信小程序毕业设计)XCX-scaffold-master(源码+截图)...
简易通用管理系统开发脚手架.已实现折叠、多页签、实时更换主题皮肤,纯html+js+css进行开发,可以随时更改源码.
easyui-scaffold Easyui-scaffold is a front-end development of scaffold, which based on the and . The rapid establishment of enterprise application model. 基于 EasyUI 和 前端开发脚手架。快速建立企业...