ROR学习笔记
记录Ruby On Rails的学习心得
Published on 2007-12-9 20:59:57 by 棍子
更加面向对象;
程序编写更加快捷,工作量小。
随机文章:
收藏到:Del.icio.us

Published on 2007-12-7 11:36:40 by todayhill
DB2 team把支持动态语言作为一个未来工作的重点,当然ROR的支持就是重中之重了。在DB2的开发team中特别抽出了人专门做这个DB2OnRails的开发.这个项目在AlphaWorks上也有.在那里,它叫D...
随机文章:
收藏到:Del.icio.us

Published on 2007-12-5 10:14:02 by todayhill
ROR在这一年里也在如设想般发展,可是企业应用似乎并没有呈井喷方式出现。
现在我继续关注ROR,正好有了一个DH的空间,有机会写点自己的小应用了。最近正在做一个RO...
随机文章:
收藏到:Del.icio.us

Published on 2006-7-30 22:04:20 by foodboox
ROR的学习总是断断续续的,有一部分原因是自己英文水平不行,读起参考手册那种比较庞大的东西感觉有些吃力,最近算是有些时间,所以找来《Rails 4 days》这个小家伙希望再迅捷的学习学习ROR的一些精华。
一边看一边翻译吧,虽然不是很难,但自己翻译能力实在一般,所以这东西只是个实验品,顺便也督促一下自己的学习进度,先发个介绍和第一天的内容,以后会慢慢补上,希望对大家有用。
随机文章:
收藏到:Del.icio.us

Published on 2006-4-22 11:27:38 by todayhill
经过几个月的学习和努力,我这个用ROR做的进销存系统终于告一段落了。因为一直都很忙,都没时间上来把后面用到的东西写上。在这段时间我用到了ROR的login_generator 好像大概是这么个名字,就是用来自动生成系统的权限验证部分的。另外还用到了file_column,用来进行文件上传的组件。除此之外,还在几个地方用了AJAX,也摩登了一把。总体来说,ROR里面资源还是很丰富的,需要的东西基本都可以找的到。
当然,经过这一个项目,对ROR的认识又深了一步,也发现了一些它的一些缺点。总体来说,感觉它距离大规模企业级应用还有不近的路要走。我下来会尽量找时间来好好总结一下我用到的ROR相关的技术和一些个人体会。
我的个人邮箱是todayhill@tom.com,如果有朋友想跟我联系可以给我写信。另外,www.railscn.com 才是人才济济,我个人也在上面获得了大量的帮助.大家可以常常去看一看.
随机文章:
收藏到:Del.icio.us

Published on 2005-12-23 11:45:45 by 夜---
初学Ruby给我留下印象最深的callback的实现,即Ruby的block。它给我的感觉是很新颖,很有想法,也很大胆。
以前我也曾接触过一些其他语言的callback的实现,但都没有真正理解其中的精髓。直到看了Ruby的block,我才突感茅塞顿开,好像积压在心头的一块大石一下子被拿开了一样。Ruby似乎就是为了block而生的(好像有些绝对了,只是为了表达一下喜悦的心情:P)。
下面就是一个Ruby的block的小例子:
class SayHello
def say_hello
hello = ‘hi ’
yield hello
end
end
SayHello.say_hello{|greeting| print greeting, ‘
结果如下:
hi tracy
它的执行过程是这样的,系统调用SayHello的say_hello方法,并带有一个block,即{}中的代码,以后简称“块”。块中的代码首先被记录下来,然后开始执行say_hello方法,先是将‘hi’赋值给变量hello,接着遇到yield关键字,这时之前被记录下来的块中的代码会将yield取代,而yield后面的变量hello赋给块里||所夹的变量,这时方法say_hello的代码就好像是下面这样:
def say_hello
hello = ‘hi ’
print ‘hi’,’
end
它所产生的结果会是hi tracy就不难理解了。
我觉得这种机制的新颖之处就在于它将一段代码作为了方法的参数,这样就大大增强了方法的灵活性,而如此灵活的设计并非一定是好事,它就像一把双刃剑,程序员需要理解它更深层次的意思,明白Ruby语言设计者的良苦用心,正确的使用,这样它必将发挥巨大的作用!否则,代码将会复杂难懂,破败不堪。
随机文章:
收藏到:Del.icio.us

Published on 2005-12-22 21:21:35 by todayhill
随着这些天来对RAILS的学习,渐渐感受着ROR开发快速所带来的欣喜,可是在这惊喜过后也自然把它跟JAVA架构做了一些比较.
这些天来最大的感觉就是,JAVA的架构比ROR要"干净"的多.而这里的"干净"与"不干净"实际上却正是我接触OO以来在一个含混不清的问题,归根结底就是面向对象里面"类的封装范围".
记得在以前刚开始学习OO的时候就说"类可以封装一系列属性和方法".好,那时候经常以Persion来做例子,人有身高有体重,有爱好有性格,这些都是属性,人还能吃饭能睡觉,这些是方法,好了,这些都是人的特征,所以都被"人"这个类来封装.多么完美的OO,我们简直是在创造世界!可是现实通常却不像想的那么完美,我想上帝创造世界的工作也一定不是一件轻松的事情.我们的系统通常要具有分布性,对象应该可以在不同的机器上传来传去,那好,为了这样的要求,在J2EE的架构设计中,常常要把M这一层再分为静态层和动态层两个层次,这样也就有了我们的service和domain以及他们之间的dao.软件设计中,通常是通过引入一个中间层来解决一些问题,而我们这里引入的中间层把"静"和"动"分开了.我想这里不仅仅是为了解决分布的问题,通常经验还告诉我们,"动"的部分改变的几率是远远大于"静"的.所以用OO来把这"动"和"静"分别封装.可这又跟我们刚开始的类设计理论似乎有些不一样了,不过,这样的设计是为了实际而做的牺牲还是对OO的活学活用呢?恐怕说出来也会是人们一个争论的话题吧.
而ROR似乎对OO更友好,学过OO的人很容易就能理解它,它的model封装了静和动两部分,包括一些验证的操作都放在model里面了,根本不分service和domain这两部分.这一切都符合我们刚开始所学到的OO,可是~有了对JAVA的理解和使用经验,我越来越觉得,跟JAVA相比这分明是一种"肮脏",混杂的类设计.不过,这样做也是有它的道理的,ROR里面的对象可以分布传输吗?分布传输过去的对象,里面的方法还可以调用吗?如果这个方法访问了本地资源,这一调用出错了怎么办?这一切的解决方法,可能就是"不让对象分布出去"吧,至少我现在还没有在ROR上看到有讲类似RMI和EJB级别的东西,它似乎是用WEB SERVICE来代替这些作为分布的解决方案,可是上面那些问题在WEB SERVICE中是怎么做的,我就没有研究过了.
上面的一些话只是现阶段的一些个人感觉,也不排除随着对ROR的学习深入而有所改变的可能.
随机文章:
收藏到:Del.icio.us

Published on 2005-12-21 23:59:33 by todayhill
随机文章:
收藏到:Del.icio.us

Published on 2005-12-21 1:04:46 by foodboox
之所以写这篇日志是因为在开始rails时浪费了大量的时间在调试环境上,因为很久前按照一个教程搭建过ROR工程,所以理所应当的感觉很简单,但相隔很长时间很多基础的概念都没有记住,所以犯了很低级的错误,要是动手前温习一下教程或者看看英文文档就不至于浪费时间了。
看山给我介绍了redrails这个IDE,因为我在win上做有没有装eclipse,所以只下了单独运行的文件,还好是绿色软件,只要有java环境就可以了,在第一步建立工程时问题随之出现,首先是workspace,这个指定一个公共目录就好了,比如“railsCode”,以后每个项目都放在里面,IDE建立工程其实等价于命令行workspace目录下运行rails 工程名,建好后会产生所有rails需要的基本目录结构,包括script里面的server(注:经我测试在win下用redrails直接运行项目的server会经常出错,而且严重到直接关闭IDE抛出异常,再次启动时server里找不到启动项,不过用命令行找到workspace目录下运行ruby script\server可以启动,我在这里费了大劲,起初还以为是项目部署的问题~),访问127.0.0.1:3000会出现Congratulations页面,这个页面就是项目\public\index.html页面,数据库配置文件,也就是我们平时写脚本所谓的CONN是项目\config\database.yml文件,在这里设置mysql设置密码似乎还会出现问题~改写后要重启server,切记!
最令我难堪的问题是项目访问路径,没看书我理所应当的按照127.0.0.1:3000\项目名访问,结果总是找不到路径(竟然为了这么一个问题熬到凌晨3点多,压根就没考虑查一下资料),其实是根本没有了解清rails的url机制,虽然现在不是了解得很全面,但知道以现在这种server的启动方式根本不存在虚拟目录的问题,也就是直接用127.0.0.1:3000访问的就是server所在项目的首页,而其他页面完全靠controller类来指定(controller类文件放在项目\app\controllers目录下),比如我新建test_controller.rb(用redrails时只要命名controller叫test即可,命令行需在项目下运行ruby script\generate controller test),这是项目中会同时产生四个文件app\controllers\test_controller.rb; app\helpers\test_helper.rb; app\view\test\; test\functional\test_controller_test.rb
此时访问127.0.0.1:3000\test会出现“
Unknown action
No action responded to index
”
查资料后修改test_controller.rb内容为“
class TestController < ApplicationController
def index
render_text"这是测试页"
end
end
”后再次访问以上路径就会出现“这是测试页”的字样了,而定义其他url同理增加新的def就可以了,不过是否所有url都要这样来定义我还没有搞清?rails里model实现比较简单,单数对复数即model里定义test.rb则DB建tests表影射,然后在controller里的test_controller.rb加scaffold:test就ok了,最基础的list、show、edit、delete操作及表单在这之后自动生成127.0.0.1:3000\test\list
可以自己定义页面模版,比如想订制list页面的,就在test_controller.rb里加入
"def list...end”然后编辑view\test\list.rhtml即可,由于...内容与模版中动态程序的书写有关,有时间还需要进一步研究,大概就是数据库对象的声明一类。
PS:太晚了,随做随学随写吧
随机文章:
收藏到:Del.icio.us

Published on 2005-12-20 14:06:45 by todayhill
MYSQL的中文问题确实非常麻烦,在JAVA开发中就曾经耗费我无数脑细胞来解决这个问题,想必在ROR下面也不是一个非常容易的事情,这个帖子谈论这个话题很全面了,在这里记录一下:
http://www.railscn.com/viewtopic.php?t=211
随机文章:
收藏到:Del.icio.us








ROR学习笔记