`

Active Scaffold Upload Branch

阅读更多
我真的被 rails plugin 嚇到了。這幾天試著做 web development, 大家應該都知道我跟這個領域不太熟吧?可是,忽然間我覺得,這樣幾乎什麼都能做了。三個 plugin, 依照我嘗試的時間順序:

1. FileColumn
2. LoginGenerator
3. 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框架中,"Scaffold"是一种便捷的工具,用于快速生成常见的CRUD(创建、读取、更新、删除)操作的控制器、视图和迁移文件。它可以帮助开发者节省大量时间,尤其在构建基本的后台管理系统时。下面将详细阐述...

    Scaffold asp.net mvc中文教程

    ### Scaffold ASP.NET MVC 中文教程知识点详解 #### 一、Scaffold 概念与作用 在软件开发领域,特别是Web应用开发中,Scaffold是一种快速生成基础代码结构的方法。通过Scaffold工具,开发者可以快速创建出包含基本...

    Laravel开发-scaffold-interface

    【Laravel开发-Scaffold Interface详解】 在 Laravel 开发过程中,Scaffold Interface 是一个非常实用的工具,它能够帮助开发者快速生成基本的CRUD(创建、读取、更新、删除)操作的控制器、视图和模型。这个工具极...

    Laravel开发-laravel5-scaffold

    在本文中,我们将深入探讨Laravel 5的开发,特别是关注其内置的Scaffold功能。Laravel是一款流行的PHP框架,以其优雅的语法和强大的功能深受开发者喜爱。Laravel 5的Scaffold工具是用于快速搭建应用程序的基础结构,...

    drupal-scaffold, 使用 Drupal/core更新 Drupal scaffold文件的Composer插件.zip

    drupal-scaffold, 使用 Drupal/core更新 Drupal scaffold文件的Composer插件 scaffold ( 比如 index.php update.php 。) 插件,用于自动下载Drupal脚本文件,通过编写器使用 drupal/core 。建议在 root root的项目的...

    Laravel开发-reverse-scaffold-generator

    在Laravel框架中,开发工具和库极大地提高了开发效率,其中"reverse-scaffold-generator"是一个非常实用的工具,尤其对于快速构建 CRUD(创建、读取、更新、删除)操作的应用程序。这个工具允许开发者从现有的数据库...

    Laravel开发-laravel-scaffold-admin

    在本文中,我们将深入探讨Laravel开发中的一个重要概念——`laravel-scaffold-admin`,它是一种用于快速构建管理界面的工具,特别适用于执行常见的CRUD(创建、读取、更新和删除)操作。Laravel是一个优雅且强大的...

    微信小程序 小工具类 XCX-scaffold-master (源代码+截图)

    微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-master (源代码+截图)微信小程序 小工具类 XCX-scaffold-...

    脚手架scaffold

    【脚手架Scaffold】是开发中的一个常用概念,尤其在Java Web开发中,它扮演着快速构建项目框架的角色。Scaffold提供了一种自动化的方式来创建基本的CRUD(Create、Read、Update、Delete)操作,使得开发者可以更快地...

    开源项目-kshvmdn-scaffold.zip

    开源项目“kshvmdn-scaffold”是一个用于快速构建项目目录结构的工具,它通过文本格式的结构文件来创建完整的目录层级。这个压缩包文件名为“kshvmdn-scaffold.zip”,其中包含了名为“scaffold-master”的子文件夹...

    Laravel开发-laravel-scaffold-generate

    在Laravel框架中,"laravel-scaffold-generate"是一个非常有用的工具,它极大地简化了CRUD(创建、读取、更新、删除)操作的开发过程。这个工具可以帮助开发者快速生成控制器、视图、模型以及迁移文件,为数据库交互...

    中文Scaffold

    【中文Scaffold】是开发过程中一个重要的工具,主要用于快速构建项目的初始结构,使得开发者能够更高效地开始编码工作。在编程领域,Scaffold通常是指一套预先定义好的模板,用于自动生成常见的模型、视图、控制器...

    graduation-scaffold_biyesheji_

    【标题】"graduation-scaffold_biyesheji_" 暗示了这是一个关于毕业设计的项目,可能是一个软件开发的毕业作品,而“biyesheji”(毕设)是中文中的毕业设计简称。这个项目可能是一个混合应用程序(Mix App),意味...

    Python库 | lk_qtquick_scaffold-1.1.0-py3-none-any.whl

    《Python库lk_qtquick_scaffold-1.1.0-py3-none-any.whl的深度解析》 在Python的世界里,丰富的库是其强大功能的重要支撑。今天我们要探讨的是名为"lk_qtquick_scaffold"的Python库,版本号为1.1.0,以whl格式提供...

    active_scaffold_sortable:花式裤子ActiveScaffold的可拖放排序列表

    安装您至少需要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 生态系统中,l5scaffold 是一个非常有用的工具,它扩展了 Laravel 5 的内置发电机,提供了更加强大和灵活的脚手架功能。这个工具使得开发者能够快速生成 CRUD...

    scaffold.zip

    "scaffold.zip"就是一个这样的开发脚手架,特别针对简易通用管理系统的构建。下面我们将深入探讨这个脚手架的特点和组成部分。 首先,"折叠"功能在管理系统中至关重要,它允许用户根据需要展开或收起不同的功能模块...

Global site tag (gtag.js) - Google Analytics