科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件Ruby on Rails的核心特性是什么?

Ruby on Rails的核心特性是什么?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文研究了使Rails在某个领域如此高效率的折衷和设计决策。然后思索了应该在Java?社区获得更多关注的受Rails启发的思想。

作者:Bruce Tate 来源:51CTO.com 2007年9月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

交互性

Ruby的交互式体验也有助于Rails。您可能认为在没有完整的IDE的情况下调试Rails应用程序将是一个痛苦的过程。实际却不是这样。Rails提供两种简化调试的功能。其中之一是breakpointer,它允许您向源代码添加breakpoint关键字。

为理解breakpointer的运行过程,可创建一个简单的Rails应用程序,生成一个控制器,启动服务器,并启动breakpointer。确保您有权使用breakpointer窗口,因为当Ruby遇到断点时您将使用它。使用Windows时,命令序列如下:

>rails sample

>cd sample

>ruby script/generate controller samples

>start ruby script\server

>start ruby script\breakpointer

如果在UNIX®或Mac OS X中运行,请确保服务器在一个单独的进程中启动。

把以下代码键入或粘贴到app/controllers/samples_controller.rb文件中:

class SamplesController < ApplicationController

def index

breakpoint

@session[:message] = "hi, mom"

render_text "Showing index"

end

def show

render_text @session[:message]

end

end

通过加载页面localhost:3000/samples和localhost:3000/samples/show来测试代码。

当Rails执行到断点时,应用程序暂停。breakpointer窗口用具有控制器当前状态的环境打开一个Ruby解释器。然后可以执行Ruby命令来查询会话的状态、执行方法和查询变量:

> puts @session[:message]

-> hi, mom

这种密切联系并没有给您一个完整的调试器,但是您确实能获得Java调试器不能为您带来的功能,包括访问完整的解释器和能够执行应用程序的方法。

能够简化调试的第二个功能是Active Record控制台。Rails也附带一个脚本,能够让您在交互式Ruby解释器窗口处理持久对象。我经常想让我的Java应用程序具有这种功能。您可以编写一个持久模型,通过该模型更改数据库,然后运行一些数据库查询来看一下它们对系统的影响。要是能够在类似的设置中查询Hibernate对象就太好了。

约定优于配置

约定优于配置也会使新的Rails开发人员能够立即上手,因为控制器和模型代码特别简洁。依靠Rails环境,可以从一些非常瘦的类获得相当高级的行为——通过采用Rails命名约定和由Rails推断应用程序的连接点而不是直接配置它们。回顾一下,具有很多属性且与部门(department)具有一对多关系的Person对象可能类似于下面这样:

class Person < Active Record::Base

belongs_to :department

end

不需要任何配置,因为Rails根据命名约定推断表(people)的名称、对象标识符和主键(id)的名称、相关的表(departments)的名称、外键(department_id)的名称、外部类(department.rb)的名称。无论对于编写、阅读还是维护来说,代码都保持简单、轻巧和非常赏心悦目。目的直接而清楚。

Java开发人员能学到什么?

我不推荐用Java语言构建一个更好的Rails。相反,Java开发人员应该从Rails框架学习一些教训,并试图构建或增强Java框架以完成下面的任务:

◆允许热部署。这将缩短开发反馈周期或支持允许热部署的框架。在Java端此优先权应该比现在高得多。

◆使用较少的XML和更多的约定。约定与配置并不是井水不犯河水,因为可以使用约定来指定明确的默认值,使用配置来覆盖约定。像Rails那样使用这种方法,您可以两全其美:具有较少重复的简洁代码而不会失去灵活性。

◆为了在调试过程中浏览Java类,合并更多的脚本语言,包括BeanShell。

◆为任务选用正确的工具。不必仅仅因为需要持久性就借助于Hibernate或仅仅因为需要Web应用程序就借助于Struts。

通过合并其他编程语言的最好特性,您可以不必重复Rails,但肯定可以改善Java体验。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章