Ruby是一门很“快”的编程语言,在很多方面表现得很好,但是你如果没有正确使用它,那么就这不是这样的啦。不注意的话,很容易让应用慢下来。接下来我指出5种方法来加速Rails应用。
这里说明一点,不要为了优化而优化,只有你在发现你的应用慢下来的关键,找准关键点,再针对它进行优化。
预先载入关键对象:Eager Load Associations
:include选项知道吧,避免N+1次查询。当然只有你在你要用到关联的对象才使用这个。
数据库能做的事情就让数据库来做好了:Do Database Work In the Database
数据库就是用来做大量数据检索和计算的,而Rails不是,所以如果是数据库能做的事情就让数据库来做好了。
举一个例子:你想看看当前登录的用户是否评论了某一篇文章,你不必查出这篇文章的所有评论记录,然后each,来与当前登录的关联评论比较。这个事情让数据库来做是这样的:
Article.comments.count(:conditions => ["user_id = ?", current_user.id]) > 0
在HTTP请求周期里尽可以做少的事情:Do as Little as Possible During the HTTP Request Cycle
举个例子来说明这个问题:我们有可能要在一个控制器里发送大量的邮件,这样会导致发起的这个HTTP请求时间很长,我们可以将这个事情作为一个后台任务,让后端来执行。任务队列就是做这个事情的。Rails3中好像会有这样的一个东东,不过我建议你们可以看看
http://github.com/tobi/delayed_job/tree/master 和
http://github.com/github/bj/tree/master
让Gem和Plugin来加速你吧 Know Your Gems and Plugins
Rails快速发展着,其中一个很好的现象就是社区中越来越多优秀的Gem和Plugin出现。在你要开发某一个特定功能的时候(如Vote)你可以先调研一下,看是不是有人已经完成了这样的工作。当然依赖一个GEM和PLugin是有风险的,所以在决定使用它们之前,一定要对它的源代码熟悉,研究一番。
避免创建无用的对象 Avoid Creating Unnecessary Objects
这个不用多说,在Ruby中 方法后面多一个"!"号和没有这个感叹号的区别就能说明这一点。
分享到:
相关推荐
9. **部署**:如何将Rails应用部署到如Heroku或AWS等云平台,以及配置Nginx或Apache作为前端服务器。 通过学习《应用Rails进行敏捷Web开发》中文第三版,你不仅能掌握Rails 2.2.2的基本用法,还能深入理解Web开发的...
- **ActiveResource**:这是一个用于客户端访问RESTful服务的库,使得Rails应用能够轻松地与其他RESTful服务进行交互。 总之,REST不仅仅是一种开发风格,更是一种设计理念,它提倡通过标准化的接口来构建灵活、可...
作者特别提到了“CRUD懶人大法Scaffold”,它是一种通过Rails自动生成代码的方式来快速搭建基本的CRUD操作,这大大简化了开发流程,使得开发者可以将更多的精力放在业务逻辑的实现上。 此外,书中还介绍了一些Rails...
**Rails应用程序** Rails,全称为Ruby on Rails,是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它基于Ruby编程语言。Rails遵循MVC(模型-视图-控制器)架构模式,使得开发者能够高效地构建功能丰富...
总的来说,“应用Rails进行敏捷Web开发”涵盖的内容广泛,包括但不限于Ruby语言、Rails框架的使用、数据库交互、测试策略、实时通信等方面。掌握这些知识点,你就能灵活运用Rails进行高效、敏捷的Web应用开发。
Rails 4默认包含了Turbolinks,这是一个JavaScript库,它可以加速页面的导航,通过只替换页面的`<body>`部分而不是整个页面来实现。这样减少了页面加载时间,提高了用户体验。 8. **Action Cable** 虽然这不是...
Rails Blueprint正是为了加速Rails 5应用的搭建而设计的一个工具,它提供了一套预配置的模板,可以帮助开发者快速启动一个新的项目,减少了重复编写基础代码的时间。 Rails 5是Rails框架的一个重要版本,引入了多项...
10. **敏捷开发**:敏捷开发是一种迭代、增量的软件开发方法,强调灵活性和客户满意度,书中会介绍如何在Rails项目中应用敏捷实践,如持续集成、短迭代周期和用户故事。 通过研究和运行"depot"源代码,你可以亲身...
你可以通过定义类和方法来创建、更新、查询数据。 3. **视图(Views)**:视图负责呈现用户界面。它们通常由HTML、CSS和JavaScript组成,可以使用ERB(Embedded Ruby)语法插入Ruby代码,以动态生成内容。 4. **...
8. **部署与维护**:书中还将涵盖如何将Rails应用部署到服务器,如使用Capistrano进行自动化部署,以及监控和优化生产环境的性能。 9. **版本控制**:Git通常用于Rails项目的版本控制,书中可能包含Git的基本操作和...
Ruby on Rails(简称RoR)是一种基于Ruby编程语言的开源框架,用于快速开发高效、优雅的Web应用程序。它遵循模型-视图-控制器(MVC)架构模式,强调DRY(Don't Repeat Yourself)原则,使得代码简洁且可重用性高。...
Rails应用依赖于许多外部库,这些库称为Gems。通过`Gemfile`,开发者可以指定应用所需的Gem版本,然后使用`bundle install`命令安装和管理这些Gem。 8. **数据库迁移** Rails的`db/migrate`目录存储数据库迁移...
第十七章讲解了 **Rails 引擎**,这是一种可以被其他 Rails 应用作为插件使用的独立 Rails 应用。 - **Rails 引擎**: - 类似于插件,但更加强大和灵活。 - 可以提供额外的功能,如电子商务模块、论坛系统等。 #...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循敏捷开发原则,致力于简化Web开发过程。Rails的核心理念是“Convention over Configuration”(约定优于配置),这意味着开发者可以减少大量...
【标题】:“Web开发敏捷之道--应用Rails源代码”是一个针对初学者的教程,通过深入理解Rails框架的源代码,帮助开发者提升Ruby编程技能。Rails是Ruby on Rails的简称,是一个开源的Web应用程序框架,遵循MVC(模型-...
8. **Testing**: 对于Rails应用,测试是必不可少的一部分。本书会教读者如何使用RSpec、Cucumber和FactoryGirl等工具进行单元测试、集成测试和行为驱动开发测试。 9. **Deployment**: 最后,书中还会介绍如何将开发...
10. **Gem包管理**:Ruby的Gem是类似Python的pip或Node.js的npm的包管理工具,Rails应用广泛依赖于Gems,如Devise用于身份验证,Pundit或CanCanCan用于权限管理,Carrierwave或Paperclip处理文件上传等。 11. **...
AASM 提供了一种声明式的方法来定义对象的状态及其转换,使得业务逻辑的管理变得更加直观和简洁。这在需要处理订单状态、用户权限等场景下尤为有用。 ##### 10. Open Source 商业模式 **知识点:** Chris ...