| 工具名稱 | Location | Working Directory | Arguments | 用途 |
| Create Rails Project | C:\Ruby\bin\rails.cmd | ${project_loc}/${project_name} | ${project_name} | 建立 Rails 專案骨架 |
| Setup OpenLaszlo Plugin | C:\Ruby\bin\ruby.exe | ${project_loc}/${project_name} | ./script/plugin install svn://rubyforge.org/var/svn/laszlo-plugin/tags/openlaszlo | 安裝 Laszlo 生成器 |
| Generate REST Controllers | C:\Ruby\bin\ruby.exe | ${project_loc}/${project_name} | ./script/generate rest_controller ${project_name} | 產生 REST XML API 控制器 |
| Create Laszlo Applets | C:\Ruby\bin\ruby.exe | ${project_loc}/${project_name} | ./script/generate applet ${string_prompt:Applet name} applet | 產生 Laszlo 前端骨架 |
| Start WEBrick | C:\Ruby\bin\ruby.exe | ${project_loc}/${project_name} | script\server | 啟動開發用 Web 伺服器 |
所有工具勾選 Refresh resources upon completion 並加入 Favorites 選單,單擊即執行。
三、專案實戰:電影清單應用
3.1 建立資料庫與資料表
mysql> CREATE DATABASE movies;
mysql> GRANT ALL ON movies.* TO 'youruser'@'localhost';
mysql> USE movies;
mysql> CREATE TABLE Movies (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
movie_name CHAR(30) NOT NULL,
movie_genre CHAR(30) NOT NULL,
movie_description TEXT NOT NULL,
movie_rating MEDIUMINT,
PRIMARY KEY (id)
);
3.2 Rails 專案建立與配置
- Eclipse 新建 Ruby 專案
movies
- 執行 Create Rails Project 外部工具
- 編輯
config/database.yml:三環境 (development/test/production) 皆指向 movies 資料庫,填入帳號密碼與 socket 路徑
- 執行 Setup OpenLaszlo Plugin 安裝生成器
- 執行 Generate REST Controllers 產生 Model 與 Controller
3.3 自動生成的核心程式碼
Model: app/models/movie.rb
class Movie < ActiveRecord::Base
end
兩行程式碼即完成 ORM 映射:Rails 依慣例將單數 Movie 映射至複數 movies 資料表,自動提供 CRUD 方法。
Controller: app/controllers/movie_controller.rb
class MovieController < ApplicationController
rest_scaffold :movie
end
rest_scaffold 宏 (由 OpenLaszlo Plugin 提供) 自動展開為完整的 REST XML API:
records/index:列表查詢 (支援分頁 Range)
page/pages:分頁查詢
schema:回傳欄位定義 XML (供 Laszlo 客戶端動態建構表單)
create/update/delete:寫入操作,回傳 XML 結果
啟動 Start WEBrick,瀏覽 https://localhost:3000/movie 即可看到 XML 輸出。
3.4 明式 Scaffold 程式碼展開 (參考)
執行 script/generate rest_scaffold movie 可產生明式方法版本 (清單 4),包含 records、page、schema、create、update、delete 完整實作,方便客製化。
3.5 Laszlo 客戶端生成與部署
- 執行 Create Laszlo Applets,輸入 Applet 名稱
movie
- 產生檔案於
app/applets/applet/:applet.lzx、datamanager.lzx、modelcontroller.lzx、modelgrid.lzx
- Eclipse 新建 Laszlo 專案
MovieClient,工作區指向 C:\OpenLaszloServer3.2\server\lps-3.2\my-apps
- 將
applets 資料夾複製至 Laszlo 專案 \src
- 瀏覽
https://127.0.0.1:8080/lps-3.2/my-apps/movieclient/bin/applets/applet/ 點擊 applet.swf
3.6 執行畫面功能
- 資料網格顯示電影清單
- 雙擊儲存格直接編輯,離焦自動送出
update 請求,資料庫即時更新
- 捲動至底部新增列,填寫後自動送出
create 請求
- 支援刪除、排序、分頁
四、架構圖解與資料流
[瀏覽器] ←SWF→ [OpenLaszlo Server:8080] ←HTTP/XML→ [Rails WEBrick:3000] ←SQL→ [MySQL]
↑ |
|---- Laszlo Applet (LZX 編譯為 SWF) |
|---- REST XML API (schema/records/create/update/delete) |
|---- ActiveRecord ORM (Movie 模型) |
五、關鍵技術亮點總結
| 技術 | 貢獻 |
| Rails 約定優於配置 | 零配置 ORM、自動路由、RESTful 風格 |
| rest_scaffold 宏 | 單行指令生成完整 REST XML API (含 schema 供前端動態綁定) |
| OpenLaszlo Plugin 生成器 | 一鍵產生資料管理、模型控制器、資料網格等 Laszlo 元件 |
| Eclipse External Tools | 將 Rails 指令碼整合至 IDE,單點啟動、自動重新整理專案視圖 |
| LZX → SWF 編譯部署 | 宣告式 UI 語言編譯為 Flash Player 通用格式,跨瀏覽器一致 |
六、遷移至現代技術棧的對照建議
| 原技術 (2006) | 現代替代 (2024+) | 遷移重點 |
| Rails 1.x | Rails 7+ / Hanami | API 模式、Hotwire、Importmaps |
| OpenLaszlo LZX | React / Vue / Svelte + TypeScript | 元件化、虛擬 DOM、生態豐富 |
| Flash Player SWF | WebAssembly / PWA / 原生 Web API | 無外掛、標準化、效能優異 |
| WEBrick | Puma / Falcon / Unicorn | 生產級並發、HTTP/2 支援 |
| Eclipse WTP + RDT | VS Code + Ruby LSP / RubyMine | 輕量、擴充生態、智慧感知 |
| Subversion | Git + GitHub/GitLab | 分散式、PR 流程、CI/CD 整合 |
七、結語
本教學展示了 2006 年前後「Rails + OpenLaszlo + Eclipse」構建 RIA 的完整工程實踐:從零建置環境、自動化指令碼、零配置 Scaffold、REST XML 契約、宣告式 UI 編譯部署。雖然具體技術棧已歷史性退場,但其核心思想——後端專注領域邏輯與 REST 契約、前端專注呈現與互動、工具鏈自動化樣板代碼、約定減少決策疲勞——在現代全端開發 (Rails API + React/Vue、Next.js、Remix 等) 中依然熠熠生輝。理解這段技術演進史,有助於把握全端架構設計的不變本質。
- 上一篇文章: Flash Remoting 整合 Java Servlet:JRun 4 環境下的遠端服務呼叫實戰
- 下一篇文章: RadRails 與 Eclipse:輕鬆打造 Ruby on Rails 開發環境
Copyright ©
程式碼之家 All Rights Reserved