ylbtech-杂项-frame:Rails框架

Rails框架首次提出是在2004年7月,它的研发者是26岁的丹麦人David Heinemeier Hansson。不同于已有复杂的Web 开发框架,Rails是一个更符合实际需要而且更高效的Web开发框架。Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整),因此,Rails在其提出后不长的时间里就受到了业内广泛的关注。

1. 简介返回顶部

Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用到控制器中的访问请求和反馈到封装数据库的模型,Rails 为你提供一个纯Ruby的开发环境发布网站时,你只需要一个数据库和一个网络服务器即可。
Ruby On Rails是一个用于编写网络应用程序的软件包。它基于一种计算机软件语言Ruby,给程序开发人员提供了强大的框架支持。你可以用比以前少的多的代码和 短的多的时间编写出一流的网络软件。
Ruby On Rails的指导原则是”不要重复你自己”(Don’t Repeat Yourself或DRY),意思是说你写的代码不会有重复的地方。比如以往数据库的接口往往是类似的程序代码但是在很多地方都要重复用到。这无论是给编写还是维护都造成 了很大的代价。相反,Ruby On Rails给你提供了绝大多数的支持,让你只需要短短的几行代码就可以实现强大的功能。而且,Rails提供了代码生成工具,让你甚至不需要编写一行代码 就实现强大的管理程序
Ruby On Rails通过reflectionruntime extension减少了对configuration文件的依靠,这和Java,C#语言的方向有很大不同,让你减少了很多配置和部署的麻烦,但是性能上却完全可以应付一般网站的需求
Rails 支持各类网络服务器和数据库。在服务器方面,我们推荐Apache、 lighttpd 或 nginx 代理至 Mongrel (或者使用FastCGI)。数据库方面,你可以采用MySQL、PostgreSQL、SQLite、Oracle、SQL Server、DB2、 或其他任何我们支持的系统。 Rails可以在各类操作系统上运行不过我们建议采用基于unix的系统进行开发

 
2. 发展经历返回顶部
Rails3.0经过两年的改进,终于发布了。社区聚集了1600多贡献者一起齐心协力,使一切变得更加美好,更快,更清洁,更美丽
在过去的两年中,Ruby on Rails 应用程序框架已经具备了一个由托管和服务提供商组成一体式行业、一套功能广泛且令人印象深刻的开发工具,还有各种在 Ruby 用语里称为 gems 和 plug-ins 的补充库 — 可增强软件的功能。例如 Engine Yard 和 Heroku 就是两个提供虚拟的、方便的 Rails 软件托管的公司;Oink 和 Bullet 分别用来显示内存使用和性能;ClearanceSunspot 则用来提供现成的身份验证和快速的索引式搜索
自2007年Apple的Leopard上捆绑了Ruby on Rails出售以来,Rails 社区也已不断壮大。全球有众多的 Rails 开发人员充满活力、团结互助,并且渴望不断地改进该软件。可以毫不夸张地说,Rails 的改进应归功于社区,因为是程序员之间不断的相互超越使得构建出的软件越来越完善。如此不断地循环,各个功能才得以从初期阶段快速发展,逐渐变的实用、功能不断强大并完善,最终成为不可或缺的工具。在很多情况下,社区认为最基本的 gems 和 plug-ins 都会保留到 Rails 核心中。Rails 的 named scopes(一个查询快捷方式),可实现与 nested forms 相同的功能。这是一个新增的功能,可取代以前的尝试,并在相同的 HTML 表单中创建和编辑多个模型。实际上,对于 Rails 开发人员来说最困难的任务或许就是跟上变化的节奏。(幸运的是,目前有一些 Ruby 和 Ruby on Rails 的每周播客,这些播客会组织并呈现最新趋势以及分享最佳实践。)
Rails 下一个主要的发布是 Rails 版本 3,该版本继续保持工具包的快速改进。与以往相同,该软件仍然非常 “固执”,即仍然偏向于约定优于配置。Rails 的核心组件始终存在,即 RESTful 路径、关系、验证、模板和数据库抽象化。不过,这些组件的许多内部内容已经被重写或者进行了改进。最明显的并且很大程度上借用了 Merb 的理念的就是很多 Rails 的基本功能不再密切结合。例如,以前只对 Rails 应用程序可用的数据验证便捷功能现在成为独立的组件,并且可以包含在 Vanilla Ruby 代码中。如呈现部件和模板等控制器功能,现在也是相互独立的,并且可以嵌入到任一库中
 
3. 改进返回顶部

Rails 3 中变动的数量太多,无法在此全部列出。要阅读带有补充资料的完整列表,请查询 Rails 3 发布通知。这里仅介绍一些很可能会影响到开发人员的一些变动:
1. 一条命令可以控制所有事件。有了 Rails 3,无需在每一个应用程序中使用整套脚本(script/server、script/generate 以及其他),使用一条命令即可取代其功能,该命令恰如其分地被命名为 rails。例如,在以前需要键入 ./script/console 的地方,您现在只需键入 rails console。
2. rails 命令还可以像以前一样生成新的应用程序。其运行方式依据其是否在现有的 Rails 应用程序中启动而有所不同。
3. 可为依赖性提供具体的解决方案。协调和解决 gem 依赖性是个棘手的问题。与可用 gems 的集合一样,gem 的修订也是随系统的不同而有所变化。因为具有这样的多样化,所以很难广泛地部署或共享一个 Rails 应用程序。Rails 3 引入了 Bundler,这是一个专门用于管理依赖性的实用程序(因此无需再使用 config.gem)。您可以在应用程序根目录内一个名为 Gemfile 的目录中声明依赖性。Bundler 将下载和存储所有指定的 gem。您甚至可以在应用程序中 “打包” gem ,以便阻止从外部存储库下载。
4. 不带查询语句的查询功能。一直以来,Rails 已经可以充分运用特定于领域的语言 (DSL) — 考虑一下 has_one 或 validates_numericality_of — 有一个明显的例外:数据库查询。可以确定地说,Rails 的动态搜寻器便捷、易用,但混合使用选项哈希值如 :conditions、:order 和 :limit 非常常见,因为都是 find_by_sql 语句。
5. Rails 3 合并了 relational algebra,这是专门设计用于表示查询的 DSL。基本命令包括 project(用于选择列)where(用于表示条件)join(用于指定关系)takeskip分别用于限定和抵消),以及 group(用于聚集)等其他属性。
6. 用于模糊样板代码的控制器。Rails 控制器的核心操作 —new、create、edit 和 update — 通常不变,尤其是当控制器大部分用于 CRUD 操作时。事实上,控制器生成器的输出 ./script/generate controller 一般不需要进一步的修改就可以满足需要。考虑到这些相似性,Rails 3 引入了 Responder 来进一步简化代码。例如下面是 create 操作全部所需的几行代码:
class PostsController respond_to :html, :xml
def create
@post = Post.create(params[:post])
respond_with(@post)
end
end
在该代码片段中,如果 @post 保存成功,respond_with(@post) 将发送到 show 以显示新的记录,而假设对象的验证失败,则发送到 new。 这仅仅是一个小样本。您可以在下一章节找到这些新功能的示例以及更多内容,例如从头构建 Rails 3 应用程序。

 
4. 特点返回顶部

全栈式的MVC框架
Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。
在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts(View 层)、Hibernate(Model层)和Struts(Controller 层)spring 整合mvc 3个框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。
约定优于配置
为了说明各个对象之间的关联关系,一般的Web应用开发框架往往采用写入XML配置文件的方法。这种方式虽然可以解决一些问题,但是却带来了管理上的混乱。
Rails 对此的态度是约定优于配置,这意味着在Rails中不会出现XML配置文件。Rails使用Web应用多年来积累的各种常见约定(更具体地说是命名规则)来代替XML配置文件,而在Rails内部的映射与发现机制根据这些约定可以实现对象之间的关联。在第1章中,通过Rails的映射与发现机制实现了数据表与Ruby对象之间的关联。
更少的代码
使用约定来代替XML配置文件说明Rails本身完成了大量的底层工作,这意味着使用更少的代码来实现应用程序是极有可能的。此外,代码量的缩减也减小了出现bug的可能性,降低了维护程序和升级程序的难度。
生成器
Rails 使用的实时映射技术和元编程技术,免去了开发人员在开发过程中编写大量样板文件代码的烦恼。在少数需要使用样板文件代码的时候,开发人员可以通过 Rails内建的生成器脚本实时创建,而不再是通过手工编写。Rails的这个特点可以使开发人员更专注于系统的逻辑结构,而不必为一些琐碎的细节所烦扰。
零周转时间
对已有的Web应用系统进行修改后,其一般需要经过配置、编译、发布、重新设置、测试等一系列步骤才能投入使用,这明显浪费了许多时间。而使用Rails开发Web应用系统,可以通过浏览器即时查看程序运行结果,从而节约了大量的时间。
支架系统
Rails的支架系统可以自动为任何相关的数据库表创建一套包含标准CRUD操作和前台视图的系统。通过支架系统,开发人员可以方便快捷地操纵数据库中的数据表。此外,Rails也允许开发人员使用自己设计的代码或视图来替换自动生成的代码和视图。
指导原则
Rails的指导原则是"不要重复你自己"(Don't Repeat Yourself, 或DRY)。意思是说你写的代码不会有重复的地方。比如以往数据库的接口往往是类似的程序代码但是在很多地方都要重复用到。这无论是给编写还是维护都造成了很大的代价。相反,Rails给你提供了绝大多数的支持,让你只需要短短的几行代码就可以实现强大的功能。而且,Rails提供了代码生成工具,让你甚至不需要编写一行代码就实现强大的管理程序。Rails通过reflection和runtime extension减少了对configuration文件的依靠,这和Java,C#语言的方向有很大不同,让你减少了很多配置和部署的麻烦,但是性能上却完全可以应付一般网站的需求。

 
5.返回顶部
 
 
6.返回顶部
 
7.返回顶部
 
8.返回顶部
 
9.返回顶部
 
10.返回顶部
1、百度百科
2、官网
3、中文社区
3、中文帮助
4、
11.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

杂项-frame:Rails框架的更多相关文章

  1. 通过Ruby On Rails 框架来更好的理解MVC框架

    通过Ruby On Rails 框架来更好的理解MVC框架   1.背景    因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...

  2. Ruby on Rails框架开发学习

    学习地址:http://www.ixueyun.com/lessons/detail-lessonId-685.html 一.课程概述 软件开发在经历了面向过程编程的阶段,现在正大行其道的是敏捷开发, ...

  3. rails框架配置

    rails框架默认有三个模式development(开发),production(上线),test(测试) Development config.cache_classes = false 每次请求都 ...

  4. Ruby on Rails框架(1)-安装全攻略

    序 关于Rails的三句箴言 (1)DRY:Don't Repeat Yourself(不要重复你自己) rails的开发理念,不要用你的代码不停的重复,rails框架给开发者提供了一套非常完善的支持 ...

  5. Rails框架学习

    Don't Repeat Yourself! Convention Over Configuration. REST. Rails框架总览. Rails框架基本使用. Rails框架数据交互. Rai ...

  6. 我给女朋友讲编程html系列(3) --html中的超链接标签-a标签 和 框架frame与框架集frameset

    我们浏览网页的时候,当单击某段文字或图片时,就会打开一个新的网页,这里面就使用了超链接. 就比如下图是一个导航类网页,当你单击某个链接就会打开新的网页. 比如,我拿我的qq空间“金河访谈”举例,新建一 ...

  7. 精通Django或Rails框架

    Django是一个开放源代码的Web应用框架,由Python写成. Rubyon Rails 是一个用于开发数据库驱动的网络应用程序的完整框架.

  8. 腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置

    在编写ruby on rails程序时,我们可能会需要用到发送邮件的程序,如果使用gmail进行smtp发送一般问题不大,但很多企业使用的是腾讯QQ企业邮箱.使用该邮箱进行链接时出现各种错误,goog ...

  9. Frame Stacking 框架堆叠

    /* [题目来源]http://poj.org/problem?id=1128 [题目分析] 几张图片叠在一起,给出堆叠后的情况,要求出所有可能的从下到上的堆叠顺序. [思路分析] 1.题目已经很明确 ...

随机推荐

  1. C++ primer第4版 4.25

    编写程序比较两个 string 类型的字符串,然后编写另一 个程序比较两个 C 风格字符串的值. string str1,str2; cout<<"Enter two strin ...

  2. git操作远端分支(转)

    http://www.cnblogs.com/Camier-myNiuer/p/5558884.html 原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a ...

  3. sping整合redis,以及做mybatis的第三方缓存

    一.spring整合redis Redis作为一个时下非常流行的NOSQL语言,不学一下有点过意不去. 背景:学习Redis用到的框架是maven+spring+mybatis(框架如何搭建这边就不叙 ...

  4. 微信小程序插件使用

    使用插件 小程序开发者可便捷地把插件添加到自己的小程序内,丰富小程序的服务.当用户在使用小程序时,将可以在小程序内使用插件提供的服务. 开放范围 所有小程序 接入流程 在小程序管理后台添加插件 小程序 ...

  5. How to convert int [12] to array<int, 12>

    code: // array::data #include <iostream> #include <cstring> #include <array> int m ...

  6. Codeup1085: 阶乘的和

    题目描述 有些数可以表示成若干个不同阶乘的和.例如,9=1!+2!+3!.小明对这些数很感兴趣,所以他给你一个正整数n,想让你告诉他这个数是否可以表示成若干个不同阶乘的和. 输入 输入包含多组测试数据 ...

  7. Appium笔记(一) 丶Appium的自我介绍

    一.我是谁,我的特点是什么 Appium是一款开源测试自动化框架,可用于原生.混合和移动Web应用程序.它使用WebDriver协议驱动iOS,Android和Windows应用程序.重要的是,App ...

  8. CTF之MD5

    MD5是一种常见的加密方式,但准确来说,它只是一种编码方式,它将任意有限长度的字符串通过哈希函数转换为特定长度的字符串. MD5编码具有单向性,即由明文变密文简单,由密文变明文困难. 破解时只能通过暴 ...

  9. 箭头函数中的 this

    JS 每一个 function 都有自己独立的运行上下文,但箭头函数不属于普通的 function,所以没有独立的上下文. 所以在箭头函数里写的 this 其实是包含该箭头函数最近的一个 functi ...

  10. java数组变量

    数组变量是一种引用类型的变量,能够指向数组对象.数组对象存储在堆内存中,当数组变量为局部变量时存储在栈内存中. int[] p = new int[]{5, 6, 7, 8, 9}; p是数组变量,指 ...