用 Apache Derby 和 JRuby on Rails 快速构建原型(擅长展示的可运行在JVM上的语言))
这些都是标准的 Rails 特性。正如欢迎屏幕建议的那样,现在需要设置数据库,以便可以开始向应用程序中添加一些内容。当然,这是使用 Derby 的指定位置。查看清单 5 并查看 Rails 的 Derby 配置。
清单 5. database.yml
在周围单击并创建一些船只。所有内容都存储在 Derby 数据库中。您可以停止并重新启动服务器,重新启动计算机,或者执行别的操作。重新启动服务器后,所有数据都将在其中。Scaffolding 可能看似神秘,但是它并不神秘。它只是可以修改的生成的代码。接下来,让我们看看修改 scaffolding 代码的简单示例。
清单 8 显示了 BoatsController
类的 index
方法。
清单 8. index
方法
当然,还可以有更多自定义。您可以让用户选择按什么排序、更改界面外观等。要点在于 scaffolding 代码本身不但对于构建原型十分有用,而且还可以轻松修改以接纳反馈。尽管如此,使用 scaffolding 仍然有限制。有时,需要构建各种各样并非来自 scaffolding 的模型和控制器原型。幸运的是,Rails 还提供了更多可以辅助这项工作的生成器。
?
这段代码类似于使用 scaffolding 可以获得的生成代码,因为我们利用了 Rails 特性快速构建原型。例如,通过使用 ActionView
类中的 form_for
API 使用 FormHelper
对象。我们使用了一些您在生成的代码中看不到的内容。首先,将表单的操作 URL 设为转到 record
方法,如清单 14 所示。我们将简单地查看此方法。接下来,使用 select helper 创建带有选项值的自定义 HTML 选择标记。使用在 DeliveryController
类的 index
方法中检索到的船只,如清单 14 所示。使用一个惯用的 Ruby 并创建数组集,每个数组都有船只名称及其 ID。这些将成为生成的 HTML 中的选项标签和选项值。这段代码本应该放入控制器中,但是它演示了 Ruby 的表现力并且该表现力是让 Ruby 非常适合快速原型化和开发的原因之一。
清单 15 中的表单执行清单 14 中的 DeliveryController
类的 record 操作。此方法将简单地创建一个新 Catch
实例并保存。然后它将转发给 list 操作(同样来自清单 14)。此操作将查询数据库以检索所有 Catch
记录。然后它聚集记录以计算数据库中每艘船的捕获物总数。您也可以使用自定义查询执行此计算。记录集合随后被划分到一组双元素数组中,其中第一个元素是 Boat
对象,第二个元素是该船只的捕获物总数。随后被传递到如下所示的视图:
清单 16. 列表视图
?
这就是创建所有船只及其总数表的非常标准的 Rails 模板。我们还使用最后一个 helper 为用户创建返回到 index 操作的链接。现在我们拥有了一个迷你应用程序的完整原型,这将结束本文,但是我们另外介绍了一些内容:关于结合使用 IDE 与 JRuby 和 Derby 的简要说明。
描述名字大小下载方法示例源代码os-ad-prototype-jruby-deadly.zip110KBHTTP
关于下载方法的信息
?
参考资料
学习
您可以参阅本文在 developerWorks 全球站点上的 英文原文。获得产品和技术
从项目 Web 站点中下载 JRuby。