`
rubyonrailscn.org
  • 浏览: 996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Rails开发技巧集锦

阅读更多
昨天在网上看到一个Rails开发技巧一览,看了觉得很有用,所以翻译了,贴在 Ruby on Rails 中文 Wiki http://wiki.rubyonrailscn.org上。转发在这里,希望对大家有帮助。

本列表整理自Massive List of Rails Development Tips

    * 将你的程序所用到的密码和API证书号保存在一个自定义的配置文件中。我使用一个YAML并沿用了database.yml类似的格式。
    * 有需要的时候就使用常量。不要重复诸如你的客服邮件地址这类字符串,而是将它们保存在常量中(可以保存在environment.rb或者你自己的配置文件中),然后在整个程序中使用该常量。
    * 保持使用UTC时间,这可以使你的程序有更好的一贯性。(不过Rails 2.1的Timezone可提供更好的功能)
    * 请勿在一个 Active Record? 数据模型中遍历另一个数据模型。那样的话会产生大量的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事务或者消息服务来处理这个花费时间的任务。Background RB? 也是一个选择. (我使用这种基数来过滤blog中的SPAM).
    * 当需要批量发送邮件时,请使用 ar_mailer,而不要在一个Rails的请求回复过程中进行发送。
    * 使用 exception_notification插件, munin, monit等工具来监管你的应用程序和服务器。
    * 不要吝啬硬件投入,那样的话你因为劣质的备份或便宜的硬件,而很快不得不花钱请人解决那些问题。
    * 测试驱动(Test-drive)你的开发
    * 使用数据库索引来提供查询速度。Rails仅索引主键,所以你需要根据具体情况设定额外的索引。
    * 测量你的代码性能。使用ruby-prof gem 和插件测量你的代码,可以做些小修改便可使你的应用程序成倍提速。
    * 将图像相关的代码依赖度减少到最小。如果你的应用程序仅仅需要生成一些缩略图,那么不要将内存浪费在导入巨大的图像库上,相反可以使用mini-magick 或 image_science 等轻量级图像库。
    * 避免无节制地渲染小的片段(partials)
    * 使用CSS而避免使用行内标签来定义风格
    * 不要使用 Active Record? 的 serialize 选项在数据库中保存巨大的对象
    * 在数据模型中使用 attr_protected :fieldname 以避免关键数据被通过修改过的表单而改写。(attr_accessible 是更安全的方式,这里解释了为什么
    * 使用Ruby类和继承来重构重复的控制器代码
    * 使用 Javascrip 技巧将页面行为从页面代码标签中分离出来
    * 将能够自给自足的类和模组(module)封装成 plugin 或 Ruby Gems?.
    * 尽可能缓存经常被访问的数据库。
    * 编写自定义的 Test::Unit assertions 或 rSpec matchers 来帮助调试测试中出现的错误
    * 使用 Linux 上的logrotate daemon 来 Rotate the Rails 和 Mongrel 的日志文件
    * 需要可靠的备份需要
    * 使用 Capistrano 或 Vlad 来自动部署你的网络应用程序
    * 尽量保持方法精简。当一个方法长过10行时,请考虑重构它
    * 运行 flog 来找出过于复杂的方法和类
    * 不必过多使用条件语句。避免使用多层嵌套的if语句,而使用Ruby的case语句和Ruby对象来进行条件处理。
    * Ruby 提供强力的元编程功能,不过这个功能很容易被滥用 (比如 eval 和 method_missing).
    * 熟悉了解各种流行的插件。 Instead of re-implementing the wheel, save yourself some time by using well tested, popular plugins.
    * 在你的login 或 user 控制器中使用 filter_parameter_logging :password, :password_confirmation 来从日志中过滤重要新。负责你的程序日志中将充满用户的密码
分享到:
评论

相关推荐

    Ruby on Rails开发 从入门到精通实战教程.rar

    本资源是一套关于Ruby on Rails开发的全面教程,旨在帮助学习者从入门到精通掌握Ruby on Rails框架的开发技能。教程内容涵盖了Ruby语言基础、Rails框架搭建、Web应用开发、数据库操作、部署与维护等方面的知识。 ...

    Web开发敏捷之道-应用Rails进行敏捷Web开发 pdf

    《Web开发敏捷之道——应用Rails进行敏捷Web开发》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。该书涵盖了从初学者到高级开发者所需的各种知识,旨在帮助读者掌握敏捷开发...

    ruby on rails(开发文档)

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,极大地简化了Web应用的开发过程。Rails的哲学是“约定优于配置”,鼓励开发者遵循一套标准的...

    Ruby on Rails Web开发学习实录随书光盘(源代码).

    本资源为"Ruby on Rails Web开发学习实录随书光盘"的源代码,是清华大学出版社出版的相关书籍的配套资料,旨在帮助读者深入理解和实践Rails开发。 1. **Ruby基础知识**:Ruby是一种面向对象的、动态类型的编程语言...

    使用Rails开发Facebook平台应用

    ### 使用Rails开发Facebook平台应用 #### 一、引言与背景 随着社交媒体的迅速发展,Facebook作为全球最大的社交网络之一,为企业和个人提供了无限的机会来创建和推广应用程序。Rails(Ruby on Rails)作为一种流行...

    web开发之rails最新调试通过购物车代码

    在Web开发领域,Ruby on Rails(简称Rails)是一种流行的开源框架,它基于MVC(Model-View-...通过学习和理解这个实例,开发者不仅可以深入理解Rails的MVC架构,还能掌握实际Web应用开发中的关键技巧和最佳实践。

    Rails

    标签 "工具" 可能意味着讨论到了与Rails开发相关的工具,如集成开发环境(IDEs)、包管理器(如Bundler)、测试框架(如RSpec和Capybara)、调试工具等,这些工具能提升开发效率和代码质量。 压缩包子文件的文件...

    Rails recipes

    通过不断的学习和实践,Rails程序员将能够运用书中的技巧来提升自己的开发效率和产品质量。 在Rails Recipes中,作者们不仅关注技术层面的问题,还考虑到了程序员在实际开发过程中可能遇到的理论和思想上的困惑。...

    windows下配置netbeans开发rails

    在Windows环境下,使用NetBeans进行Rails开发需要一系列的配置步骤,因为Rails是一个基于Ruby的Web框架,而NetBeans是一款强大的集成开发环境(IDE),支持多种编程语言,包括Ruby。以下是一些关键知识点: 1. **...

    ruby on rails 敏捷开发,3.1 pdf and epub format

    Ruby on Rails,简称Rails,是由David Heinemeier Hansson基于Ruby语言开发的一个开源Web应用程序框架,它遵循敏捷开发的理念,致力于提高开发效率和代码的可读性。在Rails 3.1版本中,引入了许多重要更新和改进,...

    Ruby on Rails敏捷开发最佳实践源代码

    通过学习和实践这些源代码,开发者不仅可以深入了解Ruby on Rails框架的工作原理,还能掌握如何利用Rails进行敏捷开发,提升自己的编程技巧和项目管理能力。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    应用Rails进行敏捷Web开发第三版

    敏捷开发是Rails开发的一个重要组成部分。书中将阐述敏捷开发的核心理念,如迭代开发、用户故事、持续集成和反馈循环。这些方法旨在提高开发团队的响应能力,适应需求变化,确保软件始终满足用户需求。 文件“应用...

    Agile Web Development with Rails

    读者可以通过这个电子版深入学习Rails开发的各种技巧和最佳实践,包括数据库设计、RESTful API的构建、安全性和性能优化等方面。 总之,《敏捷Web开发与Rails》是Ruby on Rails开发者必备的参考书,无论你是初学者...

    RailsSpace

    ### RailsSpace:构建社交网络网站 ...从基础知识到高级特性,从理论到实践,本书旨在帮助读者全面掌握Ruby on Rails的开发技巧。无论是新手还是有经验的开发者,都能从本书中获得宝贵的实践经验。

    Advanced Rails

    "Advanced Rails" 涵盖了Rails开发中的高级主题和技术,是Ruby on Rails学习进阶的重要资源,尤其适合已经对基础Rails有一定了解的开发者。 在Web开发领域,Rails以其高效、简洁的代码和“约定优于配置”的哲学吸引...

Global site tag (gtag.js) - Google Analytics