最近用Ruby On Rails做了个网站([url]http://www.loveroom.com.cn[/url]),网站内容是游记、照片还有同路同行,在使用ROR的过程中确实遇到了不少的问题,现在总结一下。
1、学习方式,《Web开发敏捷之道》一、二版一定要看,Programming Ruby中文版(第2版)用来学习Ruby语言体系,在开发过程中要多看Ruby的API和Rails的API。
2、首先遇到的问题是RMagick在Linux上的安装,也不知道是我的服务器性能不行还是什么原因,不论我用源码编译的方式还是用gem的方式,装到一半的时候服务器CPU就100%了,后来也不响应了,死机,只有打电话到机房重起,搞得我要崩溃了,后来我在我找了一台测试机安装,没有问题,我想了一个办法,在测试机上make,然后打包放到我的服务器上make install,竟然可以了。
3、国际化、本地化,ROR中models的校验信息默认都是英文的,这在中文网站方面肯定是不行的了,所以要安装gettext组件([url]http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html[/url]),它汉化的效果还是不错,不过总是让人觉得有点别扭,所以我建议有些校验,比如是否为空、字符长度这些校验还是放在controller里来做,信息提示也比较好控制。
4、插件使用,Rails的插件绝对是一大特色,可以用爽来形容,robbin介绍了几个,我也用了,主要有will_paginate,attachment_fu、bbcodeizer、legacy等,will_paginate用来做分页的,比较简单,没遇到什么问题,bbcodeizer用来实现BBCode的,也不难,但有写地方需要自己改一下,比如我用[quote],它原来是[quote="(.*?)"\],里面是用双引号,但在显示的时候,我们会结合h函数,h函数会把双引号变成",这样就不能正常解析了,所以我把它换成了单引号,legacy里面我主要用了resource_feeder,来实现RSS,也不算难,所有这些插件里最搞的算是attachment_fu了,它是用来实现上传文件,本身真的是非常方便,但在它models配置中的:min_size如果不设置位为0,在windows环境下(网上说在Linux上没问题,我没有测试),由于文件处理过程相对较长,所以取不到文件的大小,导致文件大小校验失败,只有把:min_size设为0,校验可以通过,后来又遇到一个问题,就是上传文件的时候,有很多情况不是只有文件表单的,我们会需要用户填一些其他的信息,在这样的情况下,如果用户有些必填表单出现校验错误的时候,之后就一直校验失败,搞得我有点莫名其妙,后来我自己新建了一个model对象,让表单先填充这个model并做手动校验,之后再填充数据库的model,就没问题了。
5、oniguruma组件,oniguruma是用来实现多语言的正则表达式的,特别是中、日文,这个组件在win下安装毫无问题,但我在linux上,却不行,网上资料也比较少,看到的好像是说oniguruma和Ruby1.8的版本是有点问题,它是Ruby1.9的一部分,算了,到1.9再用吧,还好用到它的地方不多,通过别的方式也能实现。
总的来说,ROR有很多很有意思的方法、属性等等,特别是它的模板、渲染、Ajax都超级的方便,ROR的开发效率太高了,比JAVA高的不是一点点,但Ruby适合互联网、适合Web2.0,不太适合企业级的应用,建议大家用ROR做点东西,就体会的到了。
1、学习方式,《Web开发敏捷之道》一、二版一定要看,Programming Ruby中文版(第2版)用来学习Ruby语言体系,在开发过程中要多看Ruby的API和Rails的API。
2、首先遇到的问题是RMagick在Linux上的安装,也不知道是我的服务器性能不行还是什么原因,不论我用源码编译的方式还是用gem的方式,装到一半的时候服务器CPU就100%了,后来也不响应了,死机,只有打电话到机房重起,搞得我要崩溃了,后来我在我找了一台测试机安装,没有问题,我想了一个办法,在测试机上make,然后打包放到我的服务器上make install,竟然可以了。
3、国际化、本地化,ROR中models的校验信息默认都是英文的,这在中文网站方面肯定是不行的了,所以要安装gettext组件([url]http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html[/url]),它汉化的效果还是不错,不过总是让人觉得有点别扭,所以我建议有些校验,比如是否为空、字符长度这些校验还是放在controller里来做,信息提示也比较好控制。
4、插件使用,Rails的插件绝对是一大特色,可以用爽来形容,robbin介绍了几个,我也用了,主要有will_paginate,attachment_fu、bbcodeizer、legacy等,will_paginate用来做分页的,比较简单,没遇到什么问题,bbcodeizer用来实现BBCode的,也不难,但有写地方需要自己改一下,比如我用[quote],它原来是[quote="(.*?)"\],里面是用双引号,但在显示的时候,我们会结合h函数,h函数会把双引号变成",这样就不能正常解析了,所以我把它换成了单引号,legacy里面我主要用了resource_feeder,来实现RSS,也不算难,所有这些插件里最搞的算是attachment_fu了,它是用来实现上传文件,本身真的是非常方便,但在它models配置中的:min_size如果不设置位为0,在windows环境下(网上说在Linux上没问题,我没有测试),由于文件处理过程相对较长,所以取不到文件的大小,导致文件大小校验失败,只有把:min_size设为0,校验可以通过,后来又遇到一个问题,就是上传文件的时候,有很多情况不是只有文件表单的,我们会需要用户填一些其他的信息,在这样的情况下,如果用户有些必填表单出现校验错误的时候,之后就一直校验失败,搞得我有点莫名其妙,后来我自己新建了一个model对象,让表单先填充这个model并做手动校验,之后再填充数据库的model,就没问题了。
5、oniguruma组件,oniguruma是用来实现多语言的正则表达式的,特别是中、日文,这个组件在win下安装毫无问题,但我在linux上,却不行,网上资料也比较少,看到的好像是说oniguruma和Ruby1.8的版本是有点问题,它是Ruby1.9的一部分,算了,到1.9再用吧,还好用到它的地方不多,通过别的方式也能实现。
总的来说,ROR有很多很有意思的方法、属性等等,特别是它的模板、渲染、Ajax都超级的方便,ROR的开发效率太高了,比JAVA高的不是一点点,但Ruby适合互联网、适合Web2.0,不太适合企业级的应用,建议大家用ROR做点东西,就体会的到了。