我真的被 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"是一种便捷的工具,用于快速生成常见的CRUD(创建、读取、更新、删除)操作的控制器、视图和迁移文件。它可以帮助开发者节省大量时间,尤其在构建基本的后台管理系统时。下面将详细阐述...
### Scaffold ASP.NET MVC 中文教程知识点详解 #### 一、Scaffold 概念与作用 在软件开发领域,特别是Web应用开发中,Scaffold是一种快速生成基础代码结构的方法。通过Scaffold工具,开发者可以快速创建出包含基本...
【Laravel开发-Scaffold Interface详解】 在 Laravel 开发过程中,Scaffold Interface 是一个非常实用的工具,它能够帮助开发者快速生成基本的CRUD(创建、读取、更新、删除)操作的控制器、视图和模型。这个工具极...
在本文中,我们将深入探讨Laravel 5的开发,特别是关注其内置的Scaffold功能。Laravel是一款流行的PHP框架,以其优雅的语法和强大的功能深受开发者喜爱。Laravel 5的Scaffold工具是用于快速搭建应用程序的基础结构,...
drupal-scaffold, 使用 Drupal/core更新 Drupal scaffold文件的Composer插件 scaffold ( 比如 index.php update.php 。) 插件,用于自动下载Drupal脚本文件,通过编写器使用 drupal/core 。建议在 root root的项目的...
在Laravel框架中,开发工具和库极大地提高了开发效率,其中"reverse-scaffold-generator"是一个非常实用的工具,尤其对于快速构建 CRUD(创建、读取、更新、删除)操作的应用程序。这个工具允许开发者从现有的数据库...
在本文中,我们将深入探讨Laravel开发中的一个重要概念——`laravel-scaffold-admin`,它是一种用于快速构建管理界面的工具,特别适用于执行常见的CRUD(创建、读取、更新和删除)操作。Laravel是一个优雅且强大的...
微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-...
【脚手架Scaffold】是开发中的一个常用概念,尤其在Java Web开发中,它扮演着快速构建项目框架的角色。Scaffold提供了一种自动化的方式来创建基本的CRUD(Create、Read、Update、Delete)操作,使得开发者可以更快地...
开源项目“kshvmdn-scaffold”是一个用于快速构建项目目录结构的工具,它通过文本格式的结构文件来创建完整的目录层级。这个压缩包文件名为“kshvmdn-scaffold.zip”,其中包含了名为“scaffold-master”的子文件夹...
在Laravel框架中,"laravel-scaffold-generate"是一个非常有用的工具,它极大地简化了CRUD(创建、读取、更新、删除)操作的开发过程。这个工具可以帮助开发者快速生成控制器、视图、模型以及迁移文件,为数据库交互...
【中文Scaffold】是开发过程中一个重要的工具,主要用于快速构建项目的初始结构,使得开发者能够更高效地开始编码工作。在编程领域,Scaffold通常是指一套预先定义好的模板,用于自动生成常见的模型、视图、控制器...
【标题】"graduation-scaffold_biyesheji_" 暗示了这是一个关于毕业设计的项目,可能是一个软件开发的毕业作品,而“biyesheji”(毕设)是中文中的毕业设计简称。这个项目可能是一个混合应用程序(Mix App),意味...
《Python库lk_qtquick_scaffold-1.1.0-py3-none-any.whl的深度解析》 在Python的世界里,丰富的库是其强大功能的重要支撑。今天我们要探讨的是名为"lk_qtquick_scaffold"的Python库,版本号为1.1.0,以whl格式提供...
安装您至少需要ActiveScaffold 3.x才能使用它,并需要Rails 4.x gem install active_scaffold_sortable用法步骤1 使用名为“ position”的列创建模型: # app/models/entry.rb# id integer# title string(255)# ...
**Laravel 开发 - l5scaffold 深度解析** 在 Laravel 生态系统中,l5scaffold 是一个非常有用的工具,它扩展了 Laravel 5 的内置发电机,提供了更加强大和灵活的脚手架功能。这个工具使得开发者能够快速生成 CRUD...
"scaffold.zip"就是一个这样的开发脚手架,特别针对简易通用管理系统的构建。下面我们将深入探讨这个脚手架的特点和组成部分。 首先,"折叠"功能在管理系统中至关重要,它允许用户根据需要展开或收起不同的功能模块...