摘自别人的ROR技术集锦

2024-03-23 22:58
文章标签 技术 集锦 别人 摘自 ror

本文主要是介绍摘自别人的ROR技术集锦,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘自http://rubyonrailscn-org.iteye.com
放在自己博客里用于查询和提醒!
本列表整理自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 来从日志中过滤重要新。负责你的程序日志中将充满用户的密码

这篇关于摘自别人的ROR技术集锦的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839763

相关文章

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4