Ruby/Rails
iteye_13569
这个作者很懒,什么都没留下…
展开
-
Ruby On Rails-2.0.2源代码分析(1)-Rails的启动
前言 本文主要是针对Ruby On Rails 2.0.2的源代码进行分析,学习与研究。所使用的工具是NetBean 6.1 Beta,WEBRick,SciTE,ruby-debug-base(0.10.0),ruby-debug-ide(0.1.10)。Ruby版本为1.8.6。 应该怎么分析总结,是开始最令人头痛的事,Ruby是面向对象的语言,从对象的层次记录吧,似乎一切...2008-03-12 23:32:59 · 90 阅读 · 0 评论 -
Rack Middleware Profile
Rack是一个高效,简洁的框架(Webserver Interface)。其设计架构十分简单,如下图所示: (图片来源:http://amberbit.com/blog/2009/04/04/introduction-to-rack-middleware/) 图中的每个Module都可以说是一个Middleware。并且这个类似stack的结构可以“堆积”更多的Middlewa...2009-05-26 21:27:22 · 157 阅读 · 0 评论 -
为Rails中的validation error增加error_code
各位同学对model中一坨坨的validates_presence_of :name, :link 之类种种的代码不会觉得陌生。在执行save,update操作,rails会自动执行validation操作,并将错误信息存放在Model#errors中。通常,对于一般web程序来将,这就够了。我们可以将validation过程中的所有错误信息显示给用户,以进行修改。但是,在web api...2008-08-05 22:49:00 · 271 阅读 · 0 评论 -
Rails中如何更加优雅的处理文件上传
通常,在rails中处理文件上传,我们会这么做,在view中生成相应html tag:<input name="my_uploaded_file" type="file"> 然后,在controller中,我们可以通过params[:my_uploaded_file]得到上传文件,进行相应处理。 假如,现在作为controller的开发人员,我不知道view开发人员将inp...2008-07-19 22:23:01 · 144 阅读 · 0 评论 -
慎用typo(theme_support)的换肤机制
前言 本文提到的typo版本是目前最新的5.0.3.98.1,theme_support版本是1.3.0。在typo中,我们看到了很好很花哨的换肤机制,而theme_support则是从typo中抽取出来的一个plugin,以供其他程序进行换肤操作。 先简单介绍下typo换肤的使用。typogarden提供了typo十分丰富的皮肤,我们只需要下载喜欢的皮肤,解压,放在typo程序根目...2008-07-17 23:29:15 · 201 阅读 · 0 评论 -
Ruby中&&操作符的妙用(旁门左道)
几乎所有的现代编程语言都提供了&&操作符,ruby也不例外。我想每个人都知道&&的用法。但是在ruby中,利用&&可以实现一些“诡异”的用法,如下例子: 1. 基于这样一个事实:几乎ruby中的所有expression都有返回值(甚至if,case等等),例如: a = 10 + 20 # => 30some_bool = tru...2008-07-09 22:30:20 · 388 阅读 · 0 评论 -
Ruby生成斐波拉契数列
不管你是用c,c++,c#,java。。。不管你是用循环,递归,lambdas。。。我保证,你写的斐波拉契数列生成算法,没有用ruby写来得简洁:x,y = 0,1Array.new(10) {|i| [0,1].include?(i) ? 1 : (x,y = y,x+y)&&(x+y) }#=>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]...2008-07-09 13:52:11 · 275 阅读 · 0 评论 -
Ruby On Rails-2.0.2源代码分析(4)-寻找Controller
前言 经过一番试验和考虑...一,我尝试了一些思维导图工具(MindMapper,FREEMIND),但我始终没有找到一种好的方式将自己学习Rails源代码的思路表述出来,就此作罢(顺便问问,有研究思维导图的同学么?能否推荐两个自己觉得用起来比较顺手的工具)。二,不再打算整理代码运行顺序图,对不熟悉Rails源代码的同学们来说,这个图可能的确没什么帮助,甚至会把人搞晕。我现在打算从R...2008-03-24 20:25:28 · 138 阅读 · 0 评论 -
Ruby On Rails-2.0.2源代码分析(3)-named route和resource
前言 在《Routing的载入》中,我大致介绍了一下Rails中最简单的route是如何加载的。这篇文章,我将来讲一讲Rails系统中更为复杂的named route和与RESTful相关的resource是如何被加载的。为了不重复太多的笔墨,这篇文章将在前文的基础上进行,如果发现单独看此文时,有少许云里雾里,建议先看一看我的前篇文章:Ruby On Rails-2.0.2源代码分...2008-03-21 00:28:38 · 109 阅读 · 0 评论 -
netbean调试ActiveSupport::OptionMerger需注意的一个问题
这两天,在调试Rails的时候,碰到一个极度奇怪的问题,困扰了我足足两天,实在让我头晕脑胀,耳晕目眩。。。。。。具体情况描述如下: Rails框架的某一个地方使用了ActiveSupport::OptionMerger类,比如:ActiveSupport::OptionMerger.new(self, options)。但是,只要我通过单步进入到OptionMerger类initiali...2008-03-18 15:08:47 · 141 阅读 · 0 评论 -
Ruby On Rails-2.0.2源代码分析(2)-Routing的载入
前言 在前一篇文章中,我大致的讲解了一下Rails的启动过程,并罗列了个人觉得比较核心的源代码进行分析,算是管中窥豹吧~在分析initializer.rb代码的时候,我说过“initializer.rb的介绍暂时结束”,因为我特意略过了初始化过程中一个十分相当非常重要的过程--Routing的载入。这里,我专门用这篇文章来讲解一下。 Routing之于Rails就如同wai...2008-03-16 22:58:12 · 127 阅读 · 0 评论 -
column_timestamp plugin
有些时候,我们可能需要记录某些列的更新时间,类似于rails的timestamps。手工一一处理稍显繁琐,于是将其抽取出来,写成了一个简单的plugin--column_timestamp,自动记录一些简单列的更新时间。 使用方法 1.将column_timestamp放到plugins目录。 2.在表中针对要记录更新时间的列建立一个新列:[column_name]_updat...2008-10-16 00:00:11 · 246 阅读 · 0 评论