
Ruby
lova1ing
这个作者很懒,什么都没留下…
展开
-
ActiveRecord 查询优化
ActiveRecord使用很方便,只需要声明映射关系,就可以方便地获取各个关联对象,而且是延迟加载。有时候这种关系延迟加载可能会严重影响性能,比如下面这个例子:[code="ruby"]class User < ActiveRecord::Baseendclass Post < ActiveRecord::Base has_many :repliesendc...2006-11-28 17:37:51 · 148 阅读 · 0 评论 -
Active Record 错误信息本地化
ActiveRecord出错信息是已经格式化过的英文字符串,这很不方便做本地化处理。要想做本地化,必须保留错误数据,在显示时再格式化为本地语言。不过ActiveRecord过早地把错误信息格式化为字符串,基本上已经断绝了本地化这条路。为了让ActiveRecord错误信息可以本地化,我采用打补丁的方式。查看验证这部分代码,发现格式化字符串分散在各个验证方法中,一一重写不大合算。好在它是调用...2006-10-12 22:28:27 · 184 阅读 · 0 评论 -
[RoR] Post/Get分派
一、前言 出于数据安全性考虑,某些破坏性链接应该使用post请求,比如一个删除记录的请求。除了脚本确认以外,服务端还需要post验证,因为脚本是可以绕过的。想像你的页面上有一个删除链接,只作了客户端脚本确认(老的scaffold生成代码有这问题),被google找到了,它一个请求就会让你的数据丢失。rails对于这类请求的处理,是通过verify方法,默认的scaffold生成代码...2006-09-17 11:13:00 · 135 阅读 · 0 评论 -
[Ruby] Ruby AOP
昨天在答一个问题时,看题不清答错了,不过却让我花了点时间想如何实现简单的AOP。在其它语言里实现AOP的确比较麻烦,java要用到动态proxy,如果是C++,除了从源码上修改还真没好办法,aspectc就是这么做的。那么ruby里面如何实现呢?由于ruby是动态脚本语言,运行期可以把一个方法改名,也可以构造一个字符串动态生成方法,那么实现这个就不是难事了。module ExecuteBef...2006-09-16 09:46:00 · 127 阅读 · 0 评论 -
[RoR] Rails unittest一个小bug
之前为了省事,数据库配置如下:development_pgsql: adapter: postgresql database: myproject_development username: postgres password: development_mysql: adapter: mysql database: myproject_development username:...2006-09-16 09:32:00 · 91 阅读 · 0 评论 -
[RoR] 修复update_attribute(s)更新全部字段的问题
这是前段时间有人讨论过的问题: 代码: order = Order.find(1) order.update_attribute(:status, 'finished') ...2006-08-26 02:10:00 · 1343 阅读 · 0 评论 -
[ROR] &:id这种用法
这是ActiveSupport扩展的一个方法。原代码如下:class Symbol def to_proc Proc.new { |*args| args.shift.__send__(self, *args) } endend它扩展出这种用法:(1..5).map(&:to_s)map原本是要接受一个block参数,普通的用法是:(1..5).map{|e| e.to_s...2006-07-11 15:40:00 · 159 阅读 · 0 评论 -
[ROR] 修复“使用POST方法时,通过URL参数改写_session_id无效”的问题
问题:使用Flash 8提供的FileReference可以方便地一次选择多个文件上传,不过除了在IE上以外,其它浏览器上的都会出现Cookie与浏览器不一致的问题。解决办法:直接的做法就是在上传时,附加一个session_id在URL上,在服务端处理时使用这个Session。在Rails中,可以把_session_id=xxxx附加在URL上。不过测试的结果是,附加的se...2006-07-03 23:58:00 · 477 阅读 · 0 评论 -
[RoR] 实现一个auto_redirect_to
最近在使用RoR做项目,体会到了快速开发的乐趣,也遇到了一些困难,其中一个就是redirect_to。我遇到的一个问题是,当使用Ajax更新页面局部内容时,session内容已经过期,这时需要整个页面跳转到登录页面。直接调用redirect_to会使局部内容显示成登录页面,它是在HTTP头里写入重定向参数来实现的。在我这里的特殊情况下,正确的做法是让它执行一个包含在<script>...2006-05-20 02:33:00 · 168 阅读 · 0 评论 -
[RoR] 在RoR中调用.Net webservice
首先写一个简单的webservice:using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProf...2006-05-14 20:08:00 · 105 阅读 · 0 评论 -
[RoR] 用javascript脚本模拟一个action
rails 1.1以上版本提供了强大优雅的RJS,可能执行一个请求多个更新。有些时候我们并不需要请求服务器,只想在浏览器上执行某些脚本更新,但又想使用RJS。所以为RoR增加了这项功能。使用方法:<script language="javascript"><%= render :update do |page| page.define_action 'test_actio...2006-05-12 23:41:00 · 117 阅读 · 0 评论 -
[RoR] ActionController::Caching模块缓存位置BUG
Caching模块用来实现caches_action/caches_page/fragment,普通用法没发现什么问题,问题在于使用下面的例子时,它不能缓存到正确的位置:class CacheController < ApplicationController caches_action :cache_one caches_page :cache_two #endclass ...2006-05-09 11:35:00 · 91 阅读 · 0 评论 -
[RoR] 简单的角色权限检查插件
代码比较简单:module ActionController #:nodoc: class CheckGroupError < ActionControllerError #:nodoc: attr_reader :group_name def initialize(group_name) @group_name = group_name end end...2006-05-08 21:30:00 · 123 阅读 · 0 评论 -
[RoR] Login Engine补丁
Login Engine是非常好用的一个登录engine,不过也有个缺点,它把用户信息缓存在session里。如果用户每次修改完自己的资料,都把session更新的话,自然是不会有什么数据不同步的问题。不过试想这样一种情况:1、用户A登录;用户A的信息将保存在session[:user]里。2、管理员操作用户A,修改用户A的资料并保存。3、用户A刷新页面。 如果显示用户资料是从sessi...2006-05-08 21:13:00 · 139 阅读 · 0 评论 -
我对Rails 1.2中 Restful的理解(二)
[quote="aardvark"]最近一直在补Ruby,心里惦记着Rails1.2但是一直没有时间去细看。昨天看了DHH的"Discovering a world of Resources on Rails",再来看楼主这个发帖,发现楼主对这个例子本身的理解有些不完整,对RESTful的理解也有偏差。楼主的例子看似和DHH的例子很像,但实际很不同。DHH的例子是User/Group,典型...2006-12-16 10:01:10 · 151 阅读 · 0 评论 -
我对Rails 1.2中 Restful的理解
讨论:我总觉得REST应该用于提供数据而不是页面,还是用用户和圈子作例子吧,感觉顺畅一些。比如某个用户的页面,他选一个圈子,点击“加入”就加入了这个圈子;而圈子的管理员也可以选择用户,并点击“添加”把用户加入圈子。这里2个页面完成的是同一个操作,都是创建一个用户-圈子的关系,但操作完以后的页面转向会不同。如果用REST来提供页面,如何来处理这些转向?另加参数?那不是搞复杂了...2006-12-16 09:59:46 · 237 阅读 · 1 评论 -
Rails 1.2 REST + Adobe Spry
[url=http://jerryinside.iteye.com/]jerryinside[/url]介绍了一个[url=http://www.iteye.com/topic/37180]adobe的ajax框架[/url],和当初见到rails一样,我几乎是看它一眼就爱上了。它是一个轻量级的ajax框架,以XML作为协议,目前功能还比较单一,不过几乎完全就是我所期待的。Rails生成X...2006-12-08 21:42:08 · 123 阅读 · 0 评论 -
Rails项目防止表单重复提交
类似struts的token,使用session保存token,调用check_token后就把session里的token清掉,所以不能重复调用。因为有些界面可能会有多个表单,这些表单最好共用同一个token,不然提交过来的token很难验证,所以这里做了处理,不会多次生成。[code="ruby"]module ApplicationHelper def token_...2006-12-07 16:35:54 · 170 阅读 · 0 评论 -
Ruby + Mechanize + NetBeans 打造WEB自动化测试平台
一直以来,公司网站主要依赖于人工进行测试,不但无法保证用来监控网站功能异常,也无法进行有效的回归测试。部分频道有单元测试,但跨频道的就很难测试。最近打算推动网站自动化测试,考察了一些开源、商业的自动化测试系统,发现功能都不是很完备,或者使用不太方便。比如我需要大量测试并行运行,需要对同一频道的每一台服务器进行绑定测试,需要模拟登录等,试用过的几个测试系统都无法完成,也没有精力测试更多了。自...2009-09-27 19:28:05 · 209 阅读 · 0 评论