- 将你的程序所用到的密码和API证书号保存在一个自定义的配置文件中。我使用一个YAML并沿用了database.yml类似的格式。
- 有需要的时候就使用常量。不要重复诸如客服邮件地址这类字符串,而是将它们保存在常量中(可以保存在environment.rb或者自定义
的配置文件中),然后在整个程序中使用该常量。
- 尽量使用UTC时间,这可以使应用程序看起来更加一致性。(不过Rails 2.1的Timezone可提供更好的功能)
- 请勿在一个 ActiveRecord
数据模型中遍历其它的数据模型。那样的话会产生大量的SQL查询操作。正确的实现方法是:1)如果多个数据模型已经相互关联,那么可以使用
find(:include)
方法使用预先加载技术,那样的话在一个SQL查询中就可以获取多个数据模型中的数据。2)如果这些数据模型没有被关联,那么你可以写一个自定义的
find,在其中采用select和join来定义跨表查询。这样的话你可能需要你的数据库模型中为非本表的域定于值读取方法以获得正确类型的值。
- 使用二进制字段时请小心。默认情况下,查询数据库会返回所有的字段,包括任何二进制字段中的完整内容。最好是使用 :select
来定义所需要获取的字段,从而减轻系统负荷。
- 要生成周期性报表时,请为报表数据创建一个专用数据表,然后将报告数据缓存到该表中。这样做要比每次现实年度或月度报告是重新产生数据要来的
快得多。
- 创建一个国家列表数据库。默认情况下,Rails使用字符串来选择和罗列国家,这对于数据模式的一致性来说是有害的。而且在生成报告时会产生
问题。
- 避免编写臃肿的控制器(controller),不要将一堆方法塞入controller,如果一个controller的方法超过10个,
那设计上或许有问题了。
- 保持你的控制器和视图(view)尽量简洁,在绝大多数情况下,大部分代码应该放在于数据模型中,而不是控制器或者视图中。
- 不要在session中保存对象。在必要时可以让session中保存数字或者字符串,然后在处理单个请求的时候根据session中的内容
从数据库取回数据。(Rails 2.0 中新的session机制解决了这个问题)
- 避免处理信息量超大的请求回复(response)。遇到要处理大信息量的请求时,你可以将改记录标志为有待处理,然后使用一个cron事务
或者消息服务来处理这个花费时间的任务。BackgroundRB 也是一个选择. (我使用这种基数来过滤blog中的SPAM)。
- 当需要批量发送邮件时,请使用 ar_mailer,而不是在一个Rails的请求回复过程中进行发送。
- 使用 exception_notification插件, munin, monit等工具来监管你的应用程序和服务器。
- 不要吝啬硬件的投入。使用劣质的备份或廉价的硬件会让你常常在服务器的维护上花费上一大笔钱,这得不偿失吧。
- 测试驱动(Test-drive)开发
- 使用数据库索引来提供查询速度。Rails只索引主键,所以需要根据具体情况设定额外的索引。
- 对代码进行性能测试。使用ruby-prof 和插件测试,找到性能瓶颈后做些小修改就能让应用程序成倍提速。
- 将图像相关的代码依赖度减少到最小。如果应用程序仅仅需要生成一些缩略图,那么不要将内存浪费在导入巨大的图像库上,相反可以使用mini-
magick 或 image_science 等轻量级图像库。
- 避免无节制地渲染小的片段(partials)。
- 使用CSS而不是在标签内定义样式。
- 不要使用 ActiveRecord 的 serialize 选项在数据库中存储过大的对象。
- 在数据模型中使用 attr_protected :fieldname
以避免关键数据被通过修改过的表单改写。(attr_accessible 是更安全的方式
- 使用Ruby类和继承来重构重复的控制器代码
- 使用 Javascrip 技巧将页面行为从页面代码标签中分离出来。
- 将能够自给自足的类和模块(module)封装成插件 或 RubyGems。
- 尽可能缓存经常被访问的数据库。
- 编写自定义的 Test::Unit 断言或 RSpec 匹配器有助于调试测试中出现的错误。
- 使用 Linux 上的logrotate 守护进程来轮询 Rails 和 Mongrel 的日志。
- 创建一个可靠的备份系统。
- 使用 Capistrano 或 Vlad 实行自动部署。
- 尽量保持方法精简。请重构超过了10行代码的方法。
- 运行 flog 来找出过于复杂的方法和类。
- 避免过多使用条件语句。使用Ruby的case语句和Ruby对象来进行条件处理,代替那些丑陋的多层嵌套if语句。
- 不要自作聪明。Ruby 提供无比强大的元编程功能,不过这个功能很容易被滥用 (比如 eval 和 method_missing).
- 熟悉了解各种流行的插件。 不要重新发明轮子,使用经过测试的流行插件既省时又省力。
- 在login 或 user 控制器中使用 filter_parameter_logging :password,
:password_confirmation 来从日志中过滤重要。负责你的程序日志中将充满用户的密码。
转自 http://wiki.rubyonrailscn.org/rails/show/Rails开发技巧集锦
分享到:
相关推荐
本资源是一套关于Ruby on Rails开发的全面教程,旨在帮助学习者从入门到精通掌握Ruby on Rails框架的开发技能。教程内容涵盖了Ruby语言基础、Rails框架搭建、Web应用开发、数据库操作、部署与维护等方面的知识。 ...
《Web开发敏捷之道——应用Rails进行敏捷Web开发》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。该书涵盖了从初学者到高级开发者所需的各种知识,旨在帮助读者掌握敏捷开发...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,极大地简化了Web应用的开发过程。Rails的哲学是“约定优于配置”,鼓励开发者遵循一套标准的...
本资源为"Ruby on Rails Web开发学习实录随书光盘"的源代码,是清华大学出版社出版的相关书籍的配套资料,旨在帮助读者深入理解和实践Rails开发。 1. **Ruby基础知识**:Ruby是一种面向对象的、动态类型的编程语言...
### 使用Rails开发Facebook平台应用 #### 一、引言与背景 随着社交媒体的迅速发展,Facebook作为全球最大的社交网络之一,为企业和个人提供了无限的机会来创建和推广应用程序。Rails(Ruby on Rails)作为一种流行...
在Web开发领域,Ruby on Rails(简称Rails)是一种流行的开源框架,它基于MVC(Model-View-...通过学习和理解这个实例,开发者不仅可以深入理解Rails的MVC架构,还能掌握实际Web应用开发中的关键技巧和最佳实践。
标签 "工具" 可能意味着讨论到了与Rails开发相关的工具,如集成开发环境(IDEs)、包管理器(如Bundler)、测试框架(如RSpec和Capybara)、调试工具等,这些工具能提升开发效率和代码质量。 压缩包子文件的文件...
通过不断的学习和实践,Rails程序员将能够运用书中的技巧来提升自己的开发效率和产品质量。 在Rails Recipes中,作者们不仅关注技术层面的问题,还考虑到了程序员在实际开发过程中可能遇到的理论和思想上的困惑。...
在Windows环境下,使用NetBeans进行Rails开发需要一系列的配置步骤,因为Rails是一个基于Ruby的Web框架,而NetBeans是一款强大的集成开发环境(IDE),支持多种编程语言,包括Ruby。以下是一些关键知识点: 1. **...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson基于Ruby语言开发的一个开源Web应用程序框架,它遵循敏捷开发的理念,致力于提高开发效率和代码的可读性。在Rails 3.1版本中,引入了许多重要更新和改进,...
通过学习和实践这些源代码,开发者不仅可以深入了解Ruby on Rails框架的工作原理,还能掌握如何利用Rails进行敏捷开发,提升自己的编程技巧和项目管理能力。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
敏捷开发是Rails开发的一个重要组成部分。书中将阐述敏捷开发的核心理念,如迭代开发、用户故事、持续集成和反馈循环。这些方法旨在提高开发团队的响应能力,适应需求变化,确保软件始终满足用户需求。 文件“应用...
读者可以通过这个电子版深入学习Rails开发的各种技巧和最佳实践,包括数据库设计、RESTful API的构建、安全性和性能优化等方面。 总之,《敏捷Web开发与Rails》是Ruby on Rails开发者必备的参考书,无论你是初学者...
### RailsSpace:构建社交网络网站 ...从基础知识到高级特性,从理论到实践,本书旨在帮助读者全面掌握Ruby on Rails的开发技巧。无论是新手还是有经验的开发者,都能从本书中获得宝贵的实践经验。
"Advanced Rails" 涵盖了Rails开发中的高级主题和技术,是Ruby on Rails学习进阶的重要资源,尤其适合已经对基础Rails有一定了解的开发者。 在Web开发领域,Rails以其高效、简洁的代码和“约定优于配置”的哲学吸引...
- **定义**:Rails是一种用于快速开发Web应用程序的开源框架,基于Ruby语言。 - **特点**:Rails遵循“约定优于配置”的原则,简化了Web应用的开发过程,使得开发者能够专注于业务逻辑而非框架本身。 #### 三、创建...