ruby on rails
除非您一直生活在没有RJ45端口的存储桶中 (是的,有些存储桶具有Internet访问权限 ),否则您可能听说过Ruby on Rails(RoR),它是一个非常流行的框架,具有很大的发展动力。 RoR最初是37signals的Basecamp产品的一部分,现在已用于各种Web应用程序中。
我在基于Fedora 16的工作站上使用了RoR 3.2。 所有基本文档均取自RoR官方网站 。 无论如何,让我们继续吧。
在开发工作站中安装框架
只需执行两个基本步骤即可:
- 安装ruby和rubygems(使用yum,apt-get或仅从RoR站点下载它们)
- 使用gems安装导轨(#gem install rails)
在一个旁注中,我必须安装一些我缺少的依赖项(即sqlite-devel),这些依赖项没有被标记为ruby或rubygem的依赖项,但是没有它们,rails命令将失败。
使用免费的IDE,应用程序服务器和数据库来设置开发环境
对于RoR,您实际上不需要的只是一个优秀的文本编辑器,我正在使用Sublime Text 2编辑器(使用非常好,并且具有很好的Ruby着色/自动完成功能)。
开发框架教程概述的“ Hello world”或类似示例
为了创建我的“ Hello world”,我遵循了官方的入门指南 。 我的第一个应用无法正常运行,可能有一些小问题。
遵循RoR主页中概述的步骤以使第一个项目正常工作会产生错误(我需要安装Java脚本引擎)。
使用错误给出的链接,我决定安装therubyracer引擎,由于没有兼容C ++的编译器,因此安装失败。 因此,回到亲爱的老百胜,我安装了gcc-c ++软件包,并且Javascript引擎终于接受了我的PC。
但这还没有结束, rails服务器命令仍然失败,抱怨我没有Java脚本引擎(这不是对开发人员友好的框架吗?:P)。 经过几次网络搜索后,我发现了有关此问题的帖子 ,瞧! http:// localhost:3000呈现了我闪闪发光的新RoR应用程序的起始页。
从“香草”项目到“ Hello RoR!” 状态非常简单,只需一个命令行即可生成我的第一个控制器和视图,编辑视图文件并在routes.rb文件中设置新的默认路由。
请注意,如果您使用最新的Rails版本,则教程中会出现错误,将标签支持添加到Post模型时,您需要在attr_accesible行中添加:tags_attribute变量,否则会出现安全错误(显然这是以前是可选的,但现在是强制性的)。
修改示例应用程序以通过自定义结构执行特定的数据库查询并显示结果
Active Record是Rails提供的默认ORM库,它功能强大且易于使用。 您可以使用提供的Ruby API执行所有您期望的工作,并且可以根据需要使用自定义SQL命令。
将自定义SQL查询添加到教程示例确实非常容易,如果结果映射到已经存在的模型实体,则更加容易。
将依赖项添加到第三方库并在我们的应用程序中使用它执行计算
使用RugyGems作为依赖管理的主干,使在Rails中使用第三方库变得非常简单。 这个社区非常庞大且非常活跃,出于好奇,我做了一个$ gem查询–remote | wc -l ,列出了将近39.000件商品。
开发“ Hello world” REST服务
REST概念是Rails的核心,因此您实际上不需要做任何特殊的事情来支持HTTP动词。 将输出格式化为JSON也是该框架的内置功能。
无论如何,开发新的基于REST的Web服务仅需几分钟。
从我们的应用程序中消费我们自己的服务
您可以使用Active Resource将RESTful资源映射到Rails模型,然后将它们用作任何其他模型,这真的很酷:)
还有其他选项,例如使用Ruby提供的功能直接进行HTTP提取,或使用HTTParty之类的一些特定的gem。
评价
学习曲线:良好
如果您已经了解Ruby并且具有Web开发的实际知识,那么学习RoR绝对是一件容易的事。 就我而言,我对Ruby一无所知,但发现它与我使用过的其他语言足够相似,因此我在几个小时内就感到宾至如归。
简单任务的开发性能:良好
如果考虑到生成器为您完成的所有工作,请添加已经可用的数千个Gems,并通过大量使用框架促进的配置上的约定来结束它,您将同意开发普通的东西很快,而且我的意思是赶快Gonzales。
复杂/单一任务的开发性能:良好
Rails提供了一些帮助,因为当您要开发框架没有真正预见到的东西时,不要花太多时间。 因此,它基本上属于Ruby本身,我发现它已经足够完善,可以说您可以设法以与大多数其他广泛使用的语言/框架相同的复杂度和挫败感来解决特定于业务/领域的问题。
依赖管理:MEDIUM
对Gems和插件的支持足够好,它提供了控制项目并使用外部库所需的东西。 它没有像Maven一样提供所有功能和自定义工具,但它可能满足大多数项目的需求。
代码性能/安全调整功能:MEDIUM
我可能缺乏足够的经验来就这一点做出判断,从我的初步评论和我编写的应用程序来看,RoR似乎对您有很多帮助,但要想针对安全性和性能进行微调是很困难的,特别是对于关键任务和/或企业级应用程序。 但是,在我自己在现实世界中以相当大的负载部署了一些RoR应用程序之后,我可能会回顾一下此声明。
平台升级/冗余功能:中
我会为此受到侮辱,但是由于脚本语言无法在受内存控制的VM中运行,因此Ruby,因此与Java或.NET相比,Rails对于真正的大型部署而言是次优的竞争者。 我并不是说您不能部署可为成千上万的用户提供服务的大型RoR应用程序,我知道有很多真实的例子,我只是认为对于普通IT团队而言,控制基于Java的应用程序的扩展规模要比控制基于Java的应用程序更容易一个Rails之一。
企业市场接受度:差
这是纯粹的看法,但至少在我公司的客户中,Ruby甚至没有出现在地图上。 您告诉他们,您将提供的下一个软件将在Ruby下运行,您可以期待听到的最好的消息是“ Whaaaat?”。
开发和使用SOAP和REST服务的复杂性:良好
在RoR下开发和使用REST服务是小菜一碟。 使用SOAP需要更多步骤,但也很容易。
TL; DR
Ruby on Rails v3易于学习和使用,提供了惊人的基于Web的应用程序开发速度,并且背后有庞大而活跃的社区,它将帮助任何迈出第一步的人解决大多数问题。
从我们的评估角度来看,RoR的主要缺点是企业界缺乏接受度,尽管Ruby和RoR现在已被Web开发领域的大多数人所熟知,但它们尚未被接受为行业中关键任务解决方案的重要平台例如银行,电信等(至少在世界南半部:)。
因此,如果您的老板对此表示满意,或者您正在开发独立的解决方案,那么我认为RoR是一个了不起的选择。 随着时间的流逝以及越来越多的人使用它,我相信它将成为Java和.NET的重要竞争者。
参考: Web开发框架–第3部分: Ricardo Zuasti博客博客中我们JCG合作伙伴 Ricardo Zuasti的Ruby on Rails 。
翻译自: https://www.javacodegeeks.com/2012/07/web-development-frameworks-part-3-ruby.html
ruby on rails