Rails框架纵览:
学习Rails框架也好几个月了,不过这段时间忙着考研复试,忘了不少了,总结一下,找回点感觉,好做毕业设计。
Ruby on Rails的两大箴言:约定优于配置(Convetion over configuration)和DRY(Don’t
repeated yourself)造就了Rails 的极高的开发效率,使Rails框架迅速风靡世界,现在可以说是红的发紫。
Ruby on Rails框架,是一个使web应用的开发、部署和维护变得更容易的框架,Rails框架非常适合进行敏捷开发和基于测试驱动开发,因为整个框架的设计,就将测试放在了很高的位置,你每生成一个Mode , Contorller他都会自动在test文件夹下生成对应的测试类,并且Rails提供了一整套类似于JUnit的单元测试工具,同时提供了对web测试的功能(甚至可以深入到Html的标签进行测试),它提供的测试设施非常全面和易用,它可以让对数据库操作部分的各个测试用例彼此隔离,提供Mock对象(request , response),使得web程序测试就象普通程序测试一样简单。
Rails的ORM做的相当的好用,虽然比hiberate的功能要弱一些,但使用Ruby语言的动态性动态的生成查询函数的功能用起来比起Hibernate爽多了,让你真正的脱离了对sql的低级操作(hibernate引入HQL,宣称具有面向对象的查询语句,感觉有自欺欺人的感觉,我感觉存在的理由只是作为一个中介,方便根据不同的sql方言生成sql而已),而同时你也拥有直接操作sql的强大功能来实用复杂的场合,例如多表连接,只查询部分字段等。它让Mode继承Active::Record ,使得的领域模型是胀血型的,更加面向对象,适合领域驱动的设计方法建模(使用Hibernate的 j2ee,一般是贫血型的,只有属性,没有行为,有违面向对象的理念。实现充血型的模型相当困难,例如使用AOP什么的)。Rails只需要使用has_many,
belong_to,has_one,has_and_belongs_to_many类似声明的方法,就可以轻松指定表间关联。同时提供了Acts As List ,Acts As Tree, 以及单表继承等高级功能。值得一提的是Rails的属性是虚的,它直接绑定于表中的属性,这样当你修改数据库设计(如增加字段),同时会反映到Mode中。ActiveRecord的功能不止于此,其提供的效验(validation)功能相当强大,你可以重载ActiveRecord的validate方法,也可以使用效验的辅助方法(validates_format_of,validate_uniqueness_of,validate_acceptance_of, validates_length_of等),使用起来非常方便。同时ActiveRecord还提供了回调方法(before_destory,before_save,after_destory,after_save等)和Observer,不需要java使用Filter和AOP的复杂配置,便可以获得其强大的功能。
ActionController作为控制器,其功能就是根据请求调用Action,在Action中执行业务方法,并转向适当的视图。ActionController提供了一种称为请求路由(Routing Requests)的方法来匹配URL请求,从而找到正确的Controller和action,类似j2ee使用xml配置,但请求路由它只需要提供一套(或自己定制)路由匹配策略就可以处理所有的请求,比j2ee针对每一个Action请求需要一个mapping简洁的多,同时也不失其强大的功能。ActionController也有类似于jsp的render(类似jsp 的forward)和redirect_to(类似于jsp的redirect),同时提供了Coookie和Session,其使用非常方便。并且使用了flash方便的在一个或多个请求中传递信息。ActionController提供了过滤器(Filters)和效验(verification)。Filter提供了类似Spring框架AOP同样强大的功能(前置/后置/环绕过滤器),你可以动态的增强一个方法,使用Filter我们可以轻松实现身份认证,日志等具有一个横切面性质的业务功能。Rails提供了页面缓存,action缓存,片段缓存,大大减少了重复操作导致的服务器资源和时间的耗费,
提高了性能。同时提供了缓存实效策略和清扫器以及基于时间的缓存实效策略,避免了手工管理缓存的困难。同时Rails还不甘ActionController现有的功能和机制,在Rails1.2提供了REST(Representions State Tranfer), REST技术,使得只需要指名控制器和相应的资源,而不需要指名Action就可以进行相应的操作。REST是基于htpp协议的一些动词GET,POST,DELETE,PUT来执行相应的操作的,它使得URLs简洁清晰,可以根据不同的请求给予不同的响应(响应可以是.html,.xml,.js等),代码相对更少,使用一个面向CRUD的控制器以及清晰的应用设计。他在controller中使用response_to, 连接和表单使用新的help method以及在routes.rb里生成新的路由等新的特色。
ActiveView提供了两种模板rxml和rhtml模版,由于ruby语言的动态性,使得ruby语言嵌入rhtml中来控制页面逻辑以及输出具有原生的优势,不用像jsp需要提供表达式语言(EL)。使用Helper方法可以避免在模版视图中嵌入大量的代码(特别是业务代码),从而实现代码和表现的分离。ActiveView提供了大量的辅助方法来提供连接,生成表单,同时提供了分页的功能。ActiveView使用布局模版、局部页面模版,以及组件,使得大量的页面和局部页面可以被共享和重用,其J2EE框架至今还尚未有以实现易于重用模版的和先进的理念(特别是渲染技术,Structs的Title ,JSF的渲染还不错,但与之相比还相差甚远),局部模版技术与rails实现的Ajax技术搭配起来可以实现很酷的页面动态效果,同时对局部模版可以进行缓存来改善web性能。模版可以方面的访问Controller的实例变量和类变量,以及辅助方法,这一切都是Controller与页面模版之间的交互非常容易,同时页面之间可以传递参数也大大地增加页面之间的交互性。
同时Rails提供的对Ajax完好的集成,rails对ajax的封装使你只需要使用ruby代码就可以产生web2.0的很酷的效果,避免使用javascript这个难以调试的东东,同时也避免了不少低级的操作,rails在背后替你做了一切。
最后值得一提的是rails1.2提供的Migration,对控制软件版本,敏捷开发,数据库模型的演变等提供了非常方便的支持。(本人乃rails新手,如有不当之处在所难免)
分享到:
相关推荐
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
gem "mongoid_rails_migrations" 如何使用 创建迁移 $ rails generate mongoid:migration 运行迁移: $ rails db:migrate $ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback...
介绍rails框架,版本是rails2点几的,不过思路差不多,具体区别可以去看官网
Beginning Google Maps Applications with Rails and Ajax: From Novice to Professional
Beginning Google Maps Applications with Rails and Ajax: From Novice to Professional
Ruby on Rails:Rails框架入门.docx
学习Ruby on Rails 4.0的逐步指南。 它包括针对Ruby 2.0.0的基本教程,是为至少了解另一种编程语言并熟悉HTML的程序员编写的。
本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。
Ruby on Rails作为一个全栈服务器端框架,提供了一套强大的测试工具和约定,以支持不同类型的测试。单元测试和功能测试是Rails中两种主要的测试类型,它们在目的、范围和实现方式上有所不同。本文将详细探讨Rails中...
Rails多站点这个gem为Rails应用程序提供了多数据库支持。 使用其中间件,您可以对应用程序进行分区,以便每个主机名都有自己的数据库。 它提供了一系列用于处理多个数据库的帮助程序,以及一些用于处理这些数据库的...
Ruby on Rails是一个开源的全栈web应用框架,它基于Ruby编程语言,由David Heinemeier Hansson创建,并遵循MVC(Model-View-Controller)设计模式。它的主要设计理念是“约定优于配置”(Convention over ...
Rails 版本这个 gem 与一起使用来跟踪你所有的 Rails 应用程序和它们正在运行的版本。 这为您提供了一个查看所有 Rails 应用程序版本的地方。安装像往常一样,将此行添加到您的应用程序的 Gemfile 并在之后打包: ...
创建一个名为 blog 的新 Rails 应用程序。 rails new blog 编辑您的 Gemfile 并添加 gem 'rails-backbone' 安装 gem 并生成脚手架。 bundle install rails g backbone:install rails g scaffold Post title:...
Rails的设置 Ruby gem通过将ActiveRecord实例的设置作为序列化的Hash存储在单独的数据库表中来处理ActiveRecord实例的设置。 包括命名空间和默认值。 要求 Ruby 2.4或更高版本 Rails 4.2或更高版本(包括Rails 6) ...
rails-docker:Docker Rails环境
8.Rails框架结构:读者将了解Rails框架的MVC(模型-视图-控制器)结构,这是构建Rails应用的基石,对于初学者来说是一个重要的学习点。 9. RubyGems和包管理:Ruby有一个强大的包管理工具RubyGems,书中可能会介绍...
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
graphql-rails-api是一个gem,它提供了生成器,可以以域驱动的设计方式轻松地描述您的graphql API。 需要任何帮助或想要在不和谐中与我交谈:Poilon#5412 安装 通过创建Rails应用 rails new project-name --api ...