使用Rails、OpenLaszlo和Eclipse开发富Internet应用程序

开始之前

Ruby on Rails 在去年已经成为发展最快、最流行的开放源码 Web 应用程序开发框架之一。但因为其专注于构建 HTML 应用程序,一些人批评 Rails 不够灵活。尤其是随着富 Internet 应用程序 (RIA) 的兴起,这些应用程序使用一些技术来复制桌面应用程序功能,比如使用 Flash 进行用户界面开发,使用 XML 进行数据传输,开发源码开发人员想知道是否有一种方法可以容易地创建一种 RIA,这种 RIA 可以利用 Ruby 的纯面向对象语言和 Rails 的惟一快速应用程序开发特性。

关于本教程

本教程将为您展示 Web 开发中两个最热门的平台:Ruby on Rails 和 OpenLaszlo,前者用于娱乐和快速 Web 应用程序开发,后者是开放源码 RIA 服务器。您将看到使用这些平台可视地创建在 Web 上部署和管理的吸引人的类似桌面的应用程序是多么容易。

虽然本教程并非讲授 Ruby 或 Laszlo,但它将展示使用开放源码 OpenLaszlo Presentation 服务器和 MySQL 来结合使用 Rails 与 RIA 是多么容易。它还将介绍如何配置 Eclipse 以设置 Rails 和 Laszlo 开发环境、自动化琐碎任务以及创建通过 Representational State Transfer (REST) Web 服务与 Rails 交互的简单 Laszlo 客户机。

前提条件

要从本教程获得最大收益,您应该基本了解编程、XML 和 SQL。

系统需求

您将需要下列工具:

Eclipse Web Tools Platform. (WTP) all-in-one bundle 或带有 WTP 和所有必要扩展的 Eclipse V3.1/3.2

OpenLaszlo

IDEforLaszlo V4

MySQL V5.0

Ruby V1.8.4(one-click 安装程序)

Rails V1.0(注意,使用最新的 Ruby 和 Rails V1.1 会出现问题)

Java 技术 V1.4 或 1.5

Subversion 客户机

还要求系统至少有 512 MB 的 RAM。

设置

本教程使用的几个应用程序和工具需要非常长的设置过程。完成之后,您将具有完美的开放源码环境来构建 RIA。在本节中,您将安装 MySQL、OpenLaszlo Presentation Server、Ruby、Rails、Eclipse WTP all-in-one 包、Ruby Development Tools (RDT) 和 IDEforLaszlo。

安装 MySQL

数据库使用 MySQL。按照下列步骤进行安装:

下载 MySQL。在撰写本文时,最新版本是 V5.0。

双击安装程序。

接受所有默认值,确保记住为 MySQL 帐户使用的登录名和口令。

出现提示时,选择 Execute,将会安装 MySQL。

现在已经设置并安装了 MySQL,接下来设置 OpenLaszlo V3.2。

安装 OpenLaszlo V3.2

OpenLaszlo 可用于多个操作系统上,但对于本教程,将使用用于 Windows® 的安装程序。下载安装程序之后:

双击 openlaszlo-3.2-windows-dev-install.exe。

阅读许可协议,并单击 I Agree 接受。

选择安装 OpenLaszlo 服务器的目录(将使用 C:/OpenLaszloServer3.2),然后单击 Install。

单击 Finish。

取决于您的系统,Laszlo 可能要花一段时间来安装。Laszlo 完成安装之后,它将启动 Laszlo Presentation 服务器并启动默认表示服务器。应该会看到如图 1 所示的内容。

图 1. OpenLaszlo 服务器

除文档之外,OpenLaszlo 资源管理器还包含大量信息,比如演示代码和互动教程。

还需要最后一个步骤让 IDEforLaszlo 与 Eclipse 一起工作。导航到 C:/whereyouinstalledlaszlo/Server /lps-3.2/WEB-INF/lib,例如 C:/OpenLaszloServer3.2/Server/lps-3.2/WEB-INF/lib,并创建名为 makelaszlowork3.1.txt 的测试文件。没有该文件,您将无法让 IDEforLaszlo 插件工作。

注意:插件被硬编码以查找 3.1 的特定上下文根,所以如果不添加该文件,使用最新版本的 Laszlo 将导致问题。

安装 Eclipse WTP

Eclipse WTP 项目专注于扩展 Eclipse 平台以构建 Web 应用程序(特别是 Java™ 2 Enterprise Edition (J2EE),但毫不费力地,它可以用于几乎任何 Web 应用程序平台)。WTP 依赖于许多其他 Eclipse 项目,比如 Eclipse Modeling Framework (EMF) 和 Graphical Editing Framework (GEF)。所以对于本例,首先下载包括所有这些依赖项的 WTP all-in-one 包,以及一个 easy-to-use 包形式的 Eclipse。可以下载 WTP 以及关联的依赖项,并安装它们,但本教程中将不介绍这些内容。

注意:如果已经安装了 Eclipse,但还想尝试安装 WTP all-in-one 包,那么也可以。虽然本教程不建议这样做,但可以让两个版本共享同一工作区,从而允许您查看以前使用其他版本的 Eclipse 创建的项目。

要设置 WTP all-in-one 包:

下载 wtp-all-in-one-sdk-1.0-win32.zip。

将 wtp-all-in-one-sdk-1.0-win32.zip 解压到目录中,比如 C:/software/eclipseWTP。

在解压包的目录中应该会看到 eclipse.exe。可以通过双击该 .exe 启动 Eclipse IDE,或者使用更好的方法,即右击 .exe,将其拖至桌面,释放右鼠标按钮。应该会弹出一个菜单,询问您是否想要创建快捷方式。创建快捷方式。双击快捷方式可以启动 IDE。现在这样做。

Eclipse 将启动并提示您选择一个工作区。默认值通常类似 c:/Documents and Settings/userid/workspace。现在选择 Default。稍后可以更改工作区。

现在应该会看到如图 2 所示的内容。

图 2. 第一次启动时的 Eclipse 欢迎屏幕

在这里,选择右上角的大弯箭头。将鼠标移动到箭头上时,它将显示 To Workbench。单击它,将会转到 Eclipse IDE V3.1 的默认视图。

接下来,需要设置 Eclipse 以使用 Laszlo。

Laszlo 的 IDE

OpenLaszlo 具有自己的 Eclipse 插件,允许您容易地编辑、更新、使用拖放组件可视地设计,甚至预览您的 Laszlo 应用程序。要安装 IDEforLaszlo:

取决于系统上已有的 Java 版本(撰写本文时为 laszloIDE-0.1.0b-jdk1.5.zip),下载最新的 IDE 版本的 zip。

启动 Eclipse WTP。

当 Eclipse IDE 启动时,转到 Select Help > Software Updates > Find and Install。

在 Feature Updates 页面上,选择 Search for new features to install,应该会看到如图 3 所示的界面。然后单击 Next。

图 3. 用于安装新 Eclipse 插件的 Install/Update 向导

在 Update sites to visit 页面上,单击 New Archived Site。

浏览并找到 laszloIDE-0.1.0b-jdk1.5.zip 文件,然后单击 OK。应该会看到如图 4 所示的界面。

图 4. 选择用于安装的 LaszloIDE 存档

在 Edit Local Site 对话框上,单击 OK 确认 zip 位置。

返回 Update sites to visit 页面(见图 5),laszloIDE-0.1ob-jdk1.5.zip 已选中,单击 Finish。

图 5. 选中 LaszloIDE 存档以确保安装它

在 Search Results 页面上,选中 laszloIDE-0.1ob-jdk1.5.zip,然后单击 Next。

在 Feature License 页面上,阅读并接受许可,然后单击 Next。

在 Installation 页面上,单击 Finished。

在 Feature Verification 页面上,单击 Install All。

提示重启时,单击 Yes。

重启之后,应该首先处于 Laszlo 视图中。此时,只需要设置 Ruby 和 Rails,并为 Rails 自定义 Eclipse,然后就可以创建 Laszlo on Rails 应用程序了。

设置 Ruby 和 Rails

对于 Windows 用户,设置 Ruby 最简单的方法是下载 one-click 安装程序。可以下载最新的 .exe(在撰写本文时为 ruby184-16p3.exe)。

注意:还可以从 Ruby-lang.org 下载 Ruby 或其源代码,但 one-click 安装程序因为包括了 Ruby 和许多其他有用的工具而让您的工作更加轻松。

下载 one-click Ruby 安装程序之后:

双击安装程序。出现提示时,选择要安装到的目录。对于本教程,使用 C:/Ruby,但您可以选择驱动器上的任意位置。

Ruby 安装之后,通过 Start > Run 转到命令提示符,然后键入 cmd。

通过在命令提示符处键入 gem install rails –include-dependencies,安装 Rails。

这将开始下载 Rails 并开始安装。将会提示您多次以安装必需的依赖项。在每次提示时键入 y,您应该会看到如图 6 所示的界面。

图 6. 使用 Ruby gem install rails 时来自命令行的结果

Rails 现在应该已安装。接下来设置 Eclipse,以便您可以编辑 Ruby 文件并自动化通常与 Rails 项目关联的一些命令行琐事。

在 Eclipse 上设置 RDT

RDT 插件为 Eclipse 用户提供了开发代码时期望的标准接口和工具,不过它是针对 Ruby 用户设计的。在本节中,您将学习如何安装 RDT 插件并自定义 Eclipse 环境,以避免使用标准文本编辑器开发 Ruby on Rails 应用程序时通常需要的一些命令行琐事。所以,要将 RDT 插件安装在您的 Eclipse 版本上:

确保 Eclipse 在运行。

转到 Help > Software Updates > Find and Install。

选择 Search for new features to install 并单击 Next。

转到 New Remote Site。

对于站点名称,使用 Ruby Development Tools。

对于 URL,使用 http://updatesite.rubypeople.org/release。

单击 OK。

选中 RDT 的复选框并单击 Next。

选择特性 RDT 并单击 Next。

确认与安装未签名插件相关的任何消息。

RDT 应该已安装,然后将提示您重启 Eclipse。选择 OK。

现在想要配置环境以便在 Eclipse 中使用 Ruby 和 Rails。启动 Eclipse,然后:

转到 Window > Preferences,并从 Preferences 树中展开 Ruby。

选择 Installed Interpreters。

单击 Add。

输入 Ruby 作为解释程序名称。

输入 ruby.exe 文件的路径(通常为 C:/ruby/bin/rubyw.exe)。应该会看到如图 7 所示的界面。

图 7. Eclipse Preferences 窗格

选择 OK。

然后选择 OK 关闭 Preferences 窗格。

既然已经设置了 Ruby,您希望使用 Eclipse 以便更容易地与 Rails 一起工作。您将设置 Eclipse,以便它调用外部 Rails 脚本,而无需您转到命令行手动键入。如果您是一位日常的 Rails 用户或有意于结合使用 Rails 与 Eclipse,请记住此处使用的技术,它们还可用于运行日常的 Rails 脚本操作。

在下一节中,您将使用 Eclipse 的能力将命令传递给 Windows 命令行以自动化这些任务。

使用 Eclipse 启动外部 Rails 脚本

Rails 提供了许多脚本,可以自动化设置 Rails 项目时的许多工作。首先是 Rails 命令,为您的 Rails 项目自动创建文件系统。还有许多其他命令允许您启动内部 Web 服务器、运行构建脚本、生成功能代码、创建应用程序骨架(脚手架 ),等等。这些脚本通常从命令行运行,如果您必须在 IDE 与命令行之间来回移动,这将非常烦人。在本节中,您将学习如何使用 Eclipse 从 Eclipse 环境内部启动这些脚本。您将多次使用这种技术,第一个要自动化的脚本是用于构建 Rails 项目的脚本。

注意:您应该知道这些设置与您的工作区相关联。如果更改工作区,您将需要重新配置这些选项,希望 RDT 的优秀开发人员有一天会将该能力构建到插件中,以便它们可以显示在上下文菜单中。

设置 Eclipse 以创建 Rails 项目

首先,将 Eclipse 打开至 Ruby 视图,然后:

转到 Window > Open Perspective > Other,然后选择 Ruby。

选择 Run > External Tools > External Tools。

从配置树中选择 Program。

选择 New 创建新程序。

对于 name,输入 Create Rails Project。

对于 Location,输入 C:/ruby/bin/rails.cmd。

对于 Working Directory,输入 ${project_loc}/${project_name}。

对于 Arguments,输入 {project_name}。

转到 Refresh 选项卡并选择它。选中 Refresh Resources Upon Completion。

选择 Common 选项卡,找到 Display in Favorites Menu 区段,并选中 External Tools。

Apply。

从 External Tools 选择 Create Rails Project 时,它将在您的项目目录中自动构建 Rails 项目。

接下来设置 Eclipse 以下载简单叫做 OpenLaszlo Rails Plug-in 的 Rails 插件。OpenLaszlo Rails Plug-in 由 Oliver Steele 开发,允许您通过提供生成器和脚手架容易地设置并构建 OpenLaszlo 客户机。

设置 Eclipse 以安装 OpenLaszlo Rails 插件

对于要使用 OpenLaszlo Rails 插件的每个 Rails 应用程序,都需要调用一次该插件。脚本下载该插件并将它安装在您的 Rails 项目中。为了该步骤工作,您必须安装了 Subversion 客户机。按照下列指示:

选择 Run > External Tools > External Tools。

从配置树中选择 Program。

选择 New 创建新程序。

对于 Name,使用 Setup Openlaszlo plug-in。

对于 Location,输入 C:/ruby/bin/ruby.exe。

对于 Working Directory,使用 ${project_loc}/${project_name}。

对于 Arguments,使用 ./script/plugin install svn://rubyforge.org/var/svn/laszlo-plugin/tags/openlaszlo。

转到 Refresh 选项卡并选中 Refresh Resources Upon Completion。

转到 Common 选项卡,找到 Display in Favorites Menu 区段,并选中 External Tools。

Apply。

要安装 OpenLaszlo 插件,不需要转到命令行并输入如下内容:

>Ruby ./script/plugin install /  svn://rubyforge.org/var/svn/laszlo-plugin/tags/openlaszlo

从 External Tools 中选择 Setup OpenLaszlo plug-in。

让我们设置另一个外部脚本调用以创建 REST 控制器。

设置 Eclipse 以生成 REST 控制器

您希望能够让 Ruby 使用 OpenLaszlo 插件自动创建 REST 控制器。REST 是创建简单的基于 XML 的 Web 服务的常见架构方法。OpenLaszlo 使用 XML 与 Rails 通信,Rails 需要能够从 OpenLaszlo 接受 XML 并传递 XML。在大多数应用服务器环境中,开发 REST XML API 可能是一种痛苦,但使用 OpenLaszlo 插件,只需简单地调用单个脚本。

打开 Eclipse,然后:

选择 Run > External Tools > External Tools。

从配置树中选择 Program。

选择 New 创建新程序。

对于 Name,使用 Generate REST Controllers。

对于 Location,使用 C:/ruby/bin/ruby.exe。

对于 Working Directory,使用 ${project_loc}/${project_name}。

对于 Arguments,使用 ./script/generate rest_controller ${project_name}。

转到 Refresh 选项卡并选中 Refresh Resources Upon Completion。

转到 Common 选项卡,找到 Display in Favorites Menu 区段,选中 External Tools,然后选择 Apply。

不管什么时候需要,都可以立即单击该按钮让 OpenLaszlo 创建 REST 控制器。

接下来,想要让 Ruby 使用 OpenLaszlo 插件生成骨架或脚手架 OpenLaszlo 应用程序。

设置 Eclipse 以创建 Laszlo applet

Rails 的一个非常酷的功能是它可以自动化 Web 应用程序开发的许多琐事。Rails 最佳特性之一是它功能创建映射到数据库的脚手架(或简单的 Create、Retrieve、Update 和 Delete (CRUD) HTML 接口),该特性允许您快速建立好接口,然后在此基础上自定义应用程序表示。它提供了构建应用程序的脚手架。

OpenLaszlo 插件允许几乎相同的特性。通过调用 OpenLaszlo 脚本/生成 applet,OpenLaszlo 可以创建可用于应用程序的脚手架客户机。要自动化该操作以从 Eclipse 调用,而非从命令行调用,则打开 Eclipse,然后:

选择 Run > External Tools > External Tools。

从配置树中选择 Program。

选择 New 创建新程序。

对于 Name,使用 Create Laszlo Applets。

对于 Location,使用 C:/ruby/bin/ruby.exe。

对于 Working Directory,使用 ${project_loc}/${project_name}。

对于 Arguments,使用 ./script/generate applet ${string_prompt:Applet name} applet。

转到 Refresh 选项卡并选中 Refresh Resources Upon Completion。

转到 Common 选项卡,找到 Display in Favorites Menu 区段,并选中 External Tools。

Apply。

要设置的最后一个外部工具允许您启动将用于开发的 Rails 内部 Web 服务器。该 Web 服务器叫做 WEBrick。在下一节中,您也要将其设置为外部工具。

从 Eclipse 调用 Rails WEBrick

Rails 附带有自己的简单 HTTP 服务器,创建用于构建和测试应用程序。通常从 Rails 应用程序目录(比如 Ruby script/server)中调用 Rails,但需要尽可能地呆在 Eclipse 环境中以允许您仅使用一个工具,从而您可以专注于开发应用程序。要设置 Eclipse 调用 WEBrick,打开 Eclipse,然后:

选择 Run > External Tools > External Tools。

从配置树中选择 Program。

选择 New 创建新程序。

对于 Name,使用 Start WEBrick。

对于 Location,使用 C:/ruby/bin/ruby.exe。

对于 Working Directory,使用 ${project_loc}/${project_name}。

对于 Arguments,使用 script/server。

转到 Refresh 选项卡并选中 Refresh Resources Upon Completion。

转到 Common 选项卡,找到 Display in Favorites Menu 区段,并选中 External Tools。

Apply。

现在,当您测试 Rails 应用程序时,可以简单地从 Eclipse 启动和关闭 Rails 开发服务器。

注意:WEBrick 是 Rails 开发 Web 服务器,不能用于生产。咨询 Ruby on Rails Web 站点获得有关设置 Rails 以使用特定生产 Web 服务器的更多信息。

提示:对于已经使用 RTD 或计划创建更多典型的 Rails 应用程序的开发人员来说,使用上述技术可以自动化几乎所有的通常使用的命令行调用(比如生成脚手架或模型)。尝试一下,您将很快发现使用 Eclipse 可以显著增加开发时间。不再需要在命令行上输入!

创建简单的电影列表

似乎您花费了整个教程来设置 Eclipse,而非开发应用程序,的确如此。很快您将看到,在教程其余部分中开始创建简单的富 Internet 应用程序时,几乎不需要任何工作就可以快速创建脚手架或骨架应用程序。

创建数据库

您需要为您的应用程序创建一个数据库。大多数 Rails 应用程序首先需要开发数据库。Ruby on Rails 的有趣方法之一是 “约定优于配置(convention over configuration)” 的思想,这在本质上意味着 Rails 强制实施特定的命名约定,从而允许 Rails 使用反射和发现以探知需要了解的有关应用程序的所有信息。然后 Rails 就可以自动化 Web 服务的许多琐事,并移除了对复杂 XML 配置文件的需要。接下来构建数据库,您将很快明白我的意思。

提示:还可以使用 Eclipse 与数据库交互和开发数据库。

对于您的数据库,您要使用一个简单的表来创建您喜欢的电影的列表,并允许您对这些电影进行评级。为此,您将使用 MySQL 命令行客户机,但如果您更喜欢使用特定的 MySQL 客户机,那么尽管使用吧。

构建数据库

要创建数据库:

转到 Start > MySQL > MySQL 5.0 > MySQL Command Line。

登录。

在提示符处键入 create database movies;,然后按 Enter。

在提示符处键入 grant all on movies.* yourlogin@localhost;,然后按 Enter。

使用该 SQL 创建电影表:

清单 1. 创建电影表的 SQL

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)  ); 

接下来创建 Ruby on Rails 项目并开始开发应用程序。

创建 Rails 项目

现在应该使用 Eclipse 创建 Ruby on Rails 项目了。确保运行了 Eclipse 编辑器。

创建电影项目

执行如下操作创建新项目:

确保处于 Ruby 视图中。否则,则转到 Windows > Open Perspective > Other,然后选择 Ruby。

转到 File > New > Project > Ruby。

输入项目名称 movies 并使用默认工作区。然后应该会在 Ruby Resources 窗格中看到名为 movies 的文件夹。

转到 Run > External Tools > Setup Rails。只要这样做,就会立刻看到弹出的进度条。完成之后,应该会在 Eclipse Console 中看到如图 8 所示的内容。

图 8. 运行 External Tools Setup Rails 时 Eclipse 控制台中的示例输出

查看 Ruby Resources 窗格,应该会看到很多目录。运行该 Rails 外部工具时,它不仅构建所有这些目录,还会创建一些文件。

告诉 Rails 要使用的数据库

在 Rails 中要设置的一个配置文件是 database.yml 文件,它告诉 Rails 要用于开发、测试或生产的数据库。如果从 Eclipse 查看 Rails 项目,应该会看到名为 config 的目录。找到之后:

展开 config 文件夹并双击 database.yml 文件。

应该会看到包含很多数据库配置信息的文件。如清单 2 所示对其进行编辑,但是要输入您的数据库用户名和口令。

清单 2. 配置 database.yml 文件

development:  adapter: mysql  database: movies  username: yourusername  password: yourpassword  socket: /path/to/your/mysql.socktest:  adapter: mysql  database: movies  username: yourusername  password: yourpassword  socket: /path/to/your/mysql.sockproduction:  adapter: mysql  database: movies  username: yourusername  password: yourpassword  socket: /path/to/your/mysql.sock

转到 File > Save 或者就使用 Ctrl+S 保存文件。

安装 OpenLaszlo Rails 插件

现在需要将 OpenLaszlo 安装到应用程序目录中。转到 Run > External Tools > Setup OpenLaszlo。应该会看到如图 9 所示的内容。

图 9. 当 OpenLaszlo 插件安装在 Rails 应用程序目录中时命令行的输出

现在可以使用 OpenLaszlo 插件为简单应用程序自动创建 REST XML 接口了。

再一次,转到 Run > External Tools > Generate REST Controllers。观察 Eclipse 控制台。应该会看到 OpenLaszlo 插件创建了很多文件,其中包括 Rails Model 和 Rails Controller。

查看电影模型

通过导航到 apps > models > 并双击 movie.rb 查看控制器的模型。应该会看到如下代码:

class Movie < ActiveRecord::Baseend

这两行代码展示了 Rails 的强大功能。class Movie 这一行实际上创建一个 Movie 对象,然后 Rails 可以将之映射到数据库中的电影表。Rails 可以这样做是因为它为数据库使用了特定命名约定,允许它将使用单数命名约定(此处为 Movie)的模型映射到总以复数形式命名的表。

Rails 还创建用于访问表中的行和属性的方法。Rails 这样做的方法是实现 ActiveRecord 模式,该模式允许 Rails 创建一个知道有关与数据库交互时需要的所有信息的类。

提示:阅读 “Crossing borders: Exploring Active Record”,了解有关 ActiveRecord 和数据库包装器如何工作的更多信息。

虽然您可能认为这是一个局限性,但很少出现您无法使用这些命名约定创建数据库的情况。对于那些您必须使用遗留数据库方案或者需要一些违反该约定的特定名称的极端情况,可以不予考虑。

查看电影控制器

下面来看应用程序的 Rails 控制器。导航到 movies > app > controllers > movie_controller.rb,然后双击打开。代码应如清单 3 所示。

清单 3. movie_controller.rb 文件

class MovieController < ApplicationController  # The following line defines methods that implement the OpenLaszlo  # REST API.  #  # To replace this file with a file that contains explicit method  # definitions, execute:  #  script/generate rest_scaffold movie  rest_scaffold :movieend

再一次,Rails 创建的 Ruby 代码只有两行。难以想像几次鼠标点击实际上已经创建了一个 REST XML Web 服务(尤其是您具有使用 J2EE 应用程序的经验时)。我们来确认一下。通过转到 Run > External Tools > Start WEBrick 启动 Rails Web 服务器。启动您喜欢的浏览器并转到 http://localhost:3000/movie。应该会看到如图 10 所示的内容。

图 10. 电影控制器生成的 XML 示例

实际上是从数据库生成 XML 的。

接下来生成 Laszlo 脚手架。首先通过单击 Eclipse 控制台上的红色 Stop 按钮停止 WEBrick 服务器。

Rails 为您生成方法

为了帮助更好地理解正在进行的工作,让我们看一下由 OpenLaszlo 生成的代码,其中使用了命令 script/generate rest_scaffold movie 以创建显式写出脚手架的每个方法的控件。

清单 4. Rails 快速创建方法

class MovieController  1)   ptions = {}   options[:conditions] = ranges.to_sql_condition unless ranges.empty?    records = Movie.find :all, options   count = Movie.count   response.headers["Content-Type"] = "text/xml"   render :text => RestHelper::records_xml(records, count)  end  alias_method :index, :records  def page   ranges = RangeList.parse params[:id], :domain_start => 1   records = Movie.find_pages ranges   count = Movie.count   response.headers["Content-Type"] = "text/xml"   render :text => RestHelper::records_xml(records, count)  end  alias_method :pages, :page  def schema   response.headers["Content-Type"] = "text/xml"   render :text => RestHelper::schema_xml(Movie)  end  def create   values = params['id'].split('&').map {|s| s.split('=', 2)}   record = Movie.new(Hash[*values.flatten])   response.headers["Content-Type"] = "text/xml"   if record.save    render :text => "#{record.id}"   else    render :text =>  "#{record.full_messages.join("/n")}"   end  end  def update   values = params['id'].split('&').map {|s| s.split('=', 2)}   attributes = Hash[*values.flatten]   id = attributes['id']   attributes.delete 'id'   record = Movie.find id   record.attributes = attributes   response.headers["Content-Type"] = "text/xml"   if record.save    render :text => "#{record.id}"   else    render :text =>  "#{record.full_messages.join("/n")}"   end  end  def delete   ranges = RangeList.parse params['id'], :domain_start => 1   conditions = ranges.to_array :first_index => 1   Movie.delete_all conditions   response.headers["Content-Type"] = "text/xml"   render :text => ""  endend

可以看到,Rails 创建了许多简单的 CRUD 方法。再一次,Rails 足够灵巧以快速创建方法,但要自定义这些方法或创建您自己的方法,可以从该文件查看如何进行。

接下来创建 Laszlo 客户机以查看 Rails 电影模型和控制器。

创建简单的 Laszlo 客户机

生成 Laszlo 脚手架

接下来创建您的 Laszlo XML:

转到 Run > External Tools > Generate Applet,当提示您输入 Applet Name 时,输入 movie。注意,这将不会生成提供视图的 Laszlo .lzx 文件。

一旦生成器创建 Laszlo 视图之后,转到 Ruby Resource 窗格并查找目录 app。

展开 app 目录并选择 applets > applet。应该会在 applet 目录中看到 applet.lzx,以及三个文件:datamanager.lzx、modelcontroller.lzx 和 modelgrid.lzx。

通过使用 Window > Show View > Other 切换到 IDEforLaszlo 视图,然后选择 Laszlo。应该会看到如图 11 所示的内容。

图 11. 从 Eclipse 中 IDEforLaszlo 视图看到的 OpenLaszlo 插件生成的 .lzx 示例

创建 OpenLaszlo 项目

OpenLaszlo 插件为您创建很多文件。在 movies/app/applets 下应该会看到三个文件:datamanager.lzx、modelcontroller.lzx 和 modelgrid.lzx。在 movies/app/applets/applet 下,应该会看到 applet.lzx。既然有了 Laszlo 代码,现在需要在 C:/OpenLaszloServer3.2/server/lps-3.2/my-apps 下创建 Laszlo 项目,以便您可以在 Laszlo Presentation Server 上运行得到的已编译 Laszlo .lzx 文件。按照下列步骤创建新 Laszlo 项目:

在 Eclipse 中,转到 File > New > Laszlo Project。

在 New Laszlo Project 向导中,输入 Movie Client 作为项目名称,然后取消选择 Use default。这将允许您编辑 workspace 目录。浏览到或输入 OpenLaszlo Server my apps 目录的路径。对于本教程,使用 C:/OpenLaszloServer3.2/server/lps-3.2/my-apps。应该会看到如图 12 所示的界面。选择 Finish。

图 12. movieclient 的 New Laszlo Project 向导

打开 Rails 项目并导航到 movie > app > applets,然后右击 applets 文件夹并选择 Copy(或使用 Ctrl+C)。

导航到名为 movieclient 的新 Laszlo 项目,将 applets 文件夹直接复制到 /src 文件夹。

打开浏览器到 http://127.0.0.1:8080/lps-3.2/my-apps/movieclient/bin/applets/applet/,应该会看到名为 applet.swf 的文件。单击该文件。应该会看到如图 13 所示的界面。

图 13. 从浏览器看到的 Laszlo on Rails movieclient

试着单击其中一个字段,您将注意到,如果更改一个字段并移动到下一字段,数据库将自动更新。还可以通过向下滚动并在字段中键入新记录来添加新记录。

结束语

您已经了解到 Web 应用程序开发中两种最热门的趋势:Ruby on Rails 和使用 OpenLaszlo V3.2 的富 Internet 应用程序开发。此外,您还学习了如何使用 Eclipse 创建快速开发环境,不仅可以编写和编辑代码,还可以自动化 Rails 和 Laszlo 项目的设置和配置。

您使用了 Rails 和 OpenLaszlo 插件来草拟应用程序的原型。在一些情况下,这足以满足您的需要。但在大多数情况下,您将需要创建更复杂的 Rails 模型、编辑控制器以及编写更复杂的 Laszlo .lzx 文件。但是,正如您所看到的,使用 Eclipse 可以极大地减少构建富 Internet 应用程序所需的时间量。

没有朋友的人生是孤独的,不完整的,可是,因为生活的忙碌,

使用Rails、OpenLaszlo和Eclipse开发富Internet应用程序

相关文章:

你感兴趣的文章:

标签云: