2007-06-16
rails虽好,但依然难用
大约从06年9月正式接触rails。买ror书,按书上画瓢。开始进行实验项目开发,再到正式项目开发,已经过去了大半年了。这个大半年的应用中,最大的感触还是,rails虽然很不错,但是依然有很多地方让你痛苦不堪。
不过这个也是大部分技术开始应用的时候经常遇到的,有些小细节上处理不好,整个项目就会被卡死。
我所遇到的rails的最大难题,第一是。中文处理,第二:数据库,第三:部署。 这些问题在前期开发中和试验项目中实在是难以遇到,但是正式项目中却能让项目失败的几个点。对于准备热心应用rails项目的各位同学,千万要当心这点。
做rails项目,要么就是严格按照rails最擅长的方式去处理,linux/unix运行环境,mysql数据库。在这种情况下,部署,和数据库部分问题就会很少,最多的也就是中文处理问题。中文处理的解决方法很多,基本不成为问题。
不过由于工作环境的问题,rails的应用环境和推荐完全不同。
中文处理问题,尝试完全用gb2312编码,问题超级多,费尽心思,虽然找到一个办法,不过并不好用。最终还是不得不采用了utf8。
数据库:rails有说明能够支持ms sql server。 能够支持和实际应用,距离相差又是甚远。虽然都是采用utf8编码,但是非常容易出问题。
部署: 用的是windows 2003,robbin的文章帮助很大,问题依然存在。 某些情况下,发送post指令,页面调用就会出错,这种错误开发环境下根本就从来不出现。
上面的三个问题,从开始到最终解决,最长的有几个月那么久。(解决办法,我都在这里发帖)。而这三个问题,从开始看各位同学对rails,ruby的推崇的文字,到实验性代码中以及ror的书上,是从未提起过。三个问题,随便哪个问题解决不了,项目就完全流产了。使用新技术的整个过程中,风险依然很大。回头想想,还真是汗颜。
论坛上有不少的同学经常想在公司里面推广新技术,新方法。我这里奉劝一句, 除非你已经用这个新技术,新方法做过好几个项目,方方面面问题都遇到过了,否则不要去推广。很多细节,只有做过,遇到过,才能够明白,理解和解决的。一些看上去不注意的细节角落,往往就是一个项目杀手隐藏在那里。当心啊当心。
不过这个也是大部分技术开始应用的时候经常遇到的,有些小细节上处理不好,整个项目就会被卡死。
我所遇到的rails的最大难题,第一是。中文处理,第二:数据库,第三:部署。 这些问题在前期开发中和试验项目中实在是难以遇到,但是正式项目中却能让项目失败的几个点。对于准备热心应用rails项目的各位同学,千万要当心这点。
做rails项目,要么就是严格按照rails最擅长的方式去处理,linux/unix运行环境,mysql数据库。在这种情况下,部署,和数据库部分问题就会很少,最多的也就是中文处理问题。中文处理的解决方法很多,基本不成为问题。
不过由于工作环境的问题,rails的应用环境和推荐完全不同。
中文处理问题,尝试完全用gb2312编码,问题超级多,费尽心思,虽然找到一个办法,不过并不好用。最终还是不得不采用了utf8。
数据库:rails有说明能够支持ms sql server。 能够支持和实际应用,距离相差又是甚远。虽然都是采用utf8编码,但是非常容易出问题。
部署: 用的是windows 2003,robbin的文章帮助很大,问题依然存在。 某些情况下,发送post指令,页面调用就会出错,这种错误开发环境下根本就从来不出现。
上面的三个问题,从开始到最终解决,最长的有几个月那么久。(解决办法,我都在这里发帖)。而这三个问题,从开始看各位同学对rails,ruby的推崇的文字,到实验性代码中以及ror的书上,是从未提起过。三个问题,随便哪个问题解决不了,项目就完全流产了。使用新技术的整个过程中,风险依然很大。回头想想,还真是汗颜。
论坛上有不少的同学经常想在公司里面推广新技术,新方法。我这里奉劝一句, 除非你已经用这个新技术,新方法做过好几个项目,方方面面问题都遇到过了,否则不要去推广。很多细节,只有做过,遇到过,才能够明白,理解和解决的。一些看上去不注意的细节角落,往往就是一个项目杀手隐藏在那里。当心啊当心。
评论
gigix
2007-08-20
ray_linn 写道
据说microsoft最近刚力挺开源了,www.codeplex.com后台老板。倒是mysql最近对源代码发布做了些修改了。
PS: microsoft web software factory和smartclient software factory都提供源代码。
PS: microsoft web software factory和smartclient software factory都提供源代码。
关键不是源码,而是做事的态度
微软的老大们做出来的东西往往它就跟我等平头百姓的习惯不匹配
从MSN Spaces到Team System,莫不如此
ray_linn
2007-08-20
gigix 写道
ray_linn 写道
gigix 写道
微软做这些东西阿,我就只好呵呵,呵呵……
人家是convention over configuration,微软是“我定规则我就赢”
人家是convention over configuration,微软是“我定规则我就赢”
没办法,你靠ruby吃饭(偶看过你写的序了),偶靠microsoft赚钱,大家就别互相鄙视了。
monorails不是microsoft,是castleproject的,它就是.net的spring,远迈spring.net
一个东西两种表述,曹操刘备,哪个是王道鬼才知道。
然则,.NET的开源社区一向被官方鄙视阿……
据说microsoft最近刚力挺开源了,www.codeplex.com后台老板。倒是mysql最近对源代码发布做了些修改了。
PS: microsoft web software factory和smartclient software factory都提供源代码。
gigix
2007-08-20
ray_linn 写道
gigix 写道
微软做这些东西阿,我就只好呵呵,呵呵……
人家是convention over configuration,微软是“我定规则我就赢”
人家是convention over configuration,微软是“我定规则我就赢”
没办法,你靠ruby吃饭(偶看过你写的序了),偶靠microsoft赚钱,大家就别互相鄙视了。
monorails不是microsoft,是castleproject的,它就是.net的spring,远迈spring.net
一个东西两种表述,曹操刘备,哪个是王道鬼才知道。
然则,.NET的开源社区一向被官方鄙视阿……
过两天Micro.我的地盘我作主.soft就可能弄出一个形似而神不似版本的monorails杀手……那个什么Team System,已然把我伤害了亚……
gigix
2007-08-20
ray_linn 写道
.NET未必没有RAILS,这些项目未来(因为都还在beta中)也不一定就比rails差多少:
1. monorails。 开源的.net web solution,采用了大量rails的概念,MVC架构
2. Microsoft Web software factory,顾名思义就是生产web software的工厂工具,MVP架构。
这两个东西,目的也是为web software打下一个框架,开发者就只管业务逻辑堆砌砖头就行。
关于MVC和MVP架构,参见大牛人:马钉。福乐的站点吧,有点更新的,这位老兄反复斟酌之后,把MVP那节删掉了重写了一个。
1. monorails。 开源的.net web solution,采用了大量rails的概念,MVC架构
2. Microsoft Web software factory,顾名思义就是生产web software的工厂工具,MVP架构。
这两个东西,目的也是为web software打下一个框架,开发者就只管业务逻辑堆砌砖头就行。
关于MVC和MVP架构,参见大牛人:马钉。福乐的站点吧,有点更新的,这位老兄反复斟酌之后,把MVP那节删掉了重写了一个。
微软做这些东西阿,我就只好呵呵,呵呵……
人家是convention over configuration,微软是“我定规则我就赢”
ray_linn
2007-08-20
.NET未必没有RAILS,这些项目未来(因为都还在beta中)也不一定就比rails差多少:
1. monorails。 开源的.net web solution,采用了大量rails的概念,MVC架构
2. Microsoft Web software factory,顾名思义就是生产web software的工厂工具,MVP架构。
这两个东西,目的也是为web software打下一个框架,开发者就只管业务逻辑堆砌砖头就行。
关于MVC和MVP架构,参见大牛人:马钉。福乐的站点吧,有点更新的,这位老兄反复斟酌之后,把MVP那节删掉了重写了一个。
1. monorails。 开源的.net web solution,采用了大量rails的概念,MVC架构
2. Microsoft Web software factory,顾名思义就是生产web software的工厂工具,MVP架构。
这两个东西,目的也是为web software打下一个框架,开发者就只管业务逻辑堆砌砖头就行。
关于MVC和MVP架构,参见大牛人:马钉。福乐的站点吧,有点更新的,这位老兄反复斟酌之后,把MVP那节删掉了重写了一个。
glchengang
2007-08-17
弃文字处理的国际标准utf8不用,而选gb2312,自找麻烦。
MySQL 免费又速度快,偏偏要去选死贵的M$ Server,不解。
Linux做服务器多好,偏偏要布署到windows,唉!!!
MySQL 免费又速度快,偏偏要去选死贵的M$ Server,不解。
Linux做服务器多好,偏偏要布署到windows,唉!!!
gigix
2007-08-17
flash 写道
特别是一些小项目,很多小公司都是用一台服务器跑很多应用,有java,有.net,有php,除非你能说服客户再拿钱买一台服务器,不然还是老老实实在win上跑吧
有一个很明显的事实
这样的项目是出不起钱请我去做的
flash
2007-08-17
gigix 写道
jjx 写道
套一句您常说的话,有问题,解决它!!! 为什么这里却没有人解决了??? 当然,你会推说是windows 本身不开源的缘故
各有各的道,用不着歧视windows ,做桌面程序,rails 比得过windows forms吗? 哦,忘了,rails不是做桌面的
各有各的道,用不着歧视windows ,做桌面程序,rails 比得过windows forms吗? 哦,忘了,rails不是做桌面的
当然有人尝试解决这些问题,Java不就是吗?不管你用Linux还是Windows,Java表现出来的功能都是一样的。
效果怎么样了呢?操作系统有那么多好东西,为了追求跨平台,只取用一个最大公约数。结果把几乎所有操作系统已经提供了的功能重新用Java实现一遍。当然这样确实解决了问题。成本有多高?收益又有多大?到底有多少人真的在用Windows做服务器?他们真的不能换掉Windows吗?
Ruby/Rails社区选择了另一种解决问题的思路,另一种价值观。如果你不欣赏这种价值观,你也歧视Rails好了。
引用
到底有多少人真的在用Windows做服务器?他们真的不能换掉Windows吗?
这里说一点非技术方面的文字,以提醒那些沉溺在技术海洋不能自拔的人--
我没用ror做过项目,所有的项目都是用java.用windows做服务器的客户也确实碰到.特别是一些小项目,很多小公司都是用一台服务器跑很多应用,有java,有.net,有php,除非你能说服客户再拿钱买一台服务器,不然还是老老实实在win上跑吧.再说个刚发生不久的例子,我一朋友公司拿到交通部的一个小系统,客户提出的要求就是win+mssql+java.我朋友提出是否可以把数据库改成mysql,得到的回复是:请按我们的要求做,如果做不到,我们就换别的公司.
我非常理解楼主,环境不是我们能完全决定的,或许你的公司在与客户打交道的时候,有足够的资本和能力说服客户完全听从你们的建议,这就是另一码事.在我们不能说服客户的时候,我们能怎么样呢?放弃这个项目,还是顶着困难上?我想大多数公司都会选择后者,因为至少在国内,敢对客户说不的公司,实在是太少了,特别是一些小公司,生存环境已经很恶劣了,你还敢说不这个"不"字来吗?
所以我非常感谢楼主,能够把自己遇到的问题及时的告诉我们这些后来者,让我们少走弯路,或者应该是某些人眼中楼主没有选择正确的环境,已经是在走弯路了,但起码当我们不得不走上这种弯路的时候,有了楼主的提示,我们可以少转几个弯.
跟贴的很多人都有着丰富的项目经验和深厚的技术底蕴,但是很少有人考虑客户这方面的因素,都是单纯的从技术角度看问题.我们做技术的目的是干什么?说白了不就是服务客户吗?或许你的客户很优秀,能听的进正确的建议,但请不要忘记,那种不懂装懂刁蛮无理的也不少见,当遇到这种客户的时候,我个人感觉,说服他们更换服务器和数据库的难度丝毫不比说服小泉不参拜靖国鬼社低!
flash
2007-08-17
weiqingfei 写道
gigix 写道
lakeeye2002 写道
自我学习以来,RAILS其快速的开发进程令人鼓舞,尽管还有很多需要完善的地方,但是我可以理解,毕竟这是一个事物发展的必经阶段,似乎到目前为止,还没有一种完善到零风险的工具.存在的,有其合理性.
Rails的快速,很大程度上是因为它缩小了你的选择空间,从而节省了作出选择的成本:它告诉你一个好的网站应该怎么做,你就照着这个套路做就是了。黑话这个就叫convention over configuration。有效缩小选择空间需要信息,这些信息就是“如何开发网站”的知识。Rails之所以快,因为它提供了更多的知识。
所以,如果你不用这些知识,它没办法让你继续快起来也就是很正常的。
这就是刀和镰刀的区别
精辟!
wf_galen
2007-08-17
项目的成败不在工具如何,关键在人,还有论坛中有些人自认为用了几天linux就觉着了不起,老子天下第一,鄙视!有本事你自己写个出来,哪怕赶上windows百分之一。
当然工具的选择对项目的开发进度会有一些决定作用,但不是绝对的,同样用c,别人可以写个操作系统,有的人....。照这里某些人的口气,c本来就不该来到世界上。
对一门语言没有完全了解之前,请不要妄谈优劣,以免误导别人,也省的让高手看了笑话。
请记住:存在既合理。
你做不到,只是说明你菜,别的....最好想好再说!
当然工具的选择对项目的开发进度会有一些决定作用,但不是绝对的,同样用c,别人可以写个操作系统,有的人....。照这里某些人的口气,c本来就不该来到世界上。
对一门语言没有完全了解之前,请不要妄谈优劣,以免误导别人,也省的让高手看了笑话。
请记住:存在既合理。
你做不到,只是说明你菜,别的....最好想好再说!
Transformers
2007-07-20
在公司推广任何框架都是一样的具有风险,首先项目中得有人非常熟悉框架,能降低风险。
yueximing
2007-07-19
win + ROR +ms sql我不觉得有什么不对劲 我现在也在开发一个网站 我觉得ROR的效率还是很高的
lz的问题我也碰到过 用了2天多解决了 解决方案可看我的博客 yueximing.tianya.cn 遇到问题不要紧 关键是你得有能力解决它!
lz的问题我也碰到过 用了2天多解决了 解决方案可看我的博客 yueximing.tianya.cn 遇到问题不要紧 关键是你得有能力解决它!
seacolor
2007-07-05
其实请楼主想想,为什么要选择 Win+RoR+mssql 这个方案? 对于一般的web业务,Win + .net + ms sql 完全绰绰有余。 如果 Win 和mssql不能丢弃,完全没有必要用 ROR。
Wuvist
2007-07-04
gigix 写道
ltian 写道
我晕倒了,连MS sql server这样最普通的数据库都支持不了吗,一个开发框架难道还有数据库限制
整个Ruby on Rails社区说老实话就是歧视Windows用户。Windows本来就是一个糟糕的、不适合做服务器的操作系统,你为什么一定要用它做服务器?既然你要这么做,就为自己的选择付出代价吧:你会经常看到Ruby或者Rails的某个特性不支持Windows。
"Windows本来就是一个糟糕的、不适合做服务器的操作系统"
所以,myspace,godaddy等都是傻逼被微软洗脑了去用windows?
选择Windows不是一个“错误”的选择。
Win + .net + ms sql 跟LAMP / Linux LightHTTPD Mysql Rails等是不同选择……没有说谁错误还是谁正确……胡萝卜青菜各有所爱……
选择在 win / ms sql上面跑Rails才是一个错误的选择……
就跟选择在 linux / mysql 上面跑asp.net一样……
gigix
2007-07-04
jjx 写道
套一句您常说的话,有问题,解决它!!! 为什么这里却没有人解决了??? 当然,你会推说是windows 本身不开源的缘故
各有各的道,用不着歧视windows ,做桌面程序,rails 比得过windows forms吗? 哦,忘了,rails不是做桌面的
各有各的道,用不着歧视windows ,做桌面程序,rails 比得过windows forms吗? 哦,忘了,rails不是做桌面的
当然有人尝试解决这些问题,Java不就是吗?不管你用Linux还是Windows,Java表现出来的功能都是一样的。
效果怎么样了呢?操作系统有那么多好东西,为了追求跨平台,只取用一个最大公约数。结果把几乎所有操作系统已经提供了的功能重新用Java实现一遍。当然这样确实解决了问题。成本有多高?收益又有多大?到底有多少人真的在用Windows做服务器?他们真的不能换掉Windows吗?
Ruby/Rails社区选择了另一种解决问题的思路,另一种价值观。如果你不欣赏这种价值观,你也歧视Rails好了。
netfishx
2007-07-04
ls你这是为了抬杠而抬杠吧?windows本身就是有这样的问题,歧视它怪的着别人吗。后面举的例子更是胡说八道
jjx
2007-07-04
gigix 写道
shrpcn 写道
引用
整个Ruby on Rails社区说老实话就是歧视Windows用户。Windows本来就是一个糟糕的、不适合做服务器的操作系统,你为什么一定要用它做服务器?既然你要这么做,就为自己的选择付出代价吧:你会经常看到Ruby或者Rails的某个特性不支持Windows。
引用
我真的希望不要再看到类似这样信口开河胡说八道的废话
你能不能哪怕举出一个具体的论据来支持你的观点以便让别人知道你说的这句大话至少略微经过了你的大脑?
你能不能哪怕举出一个具体的论据来支持你的观点以便让别人知道你说的这句大话至少略微经过了你的大脑?
一样的问题,信口开河.
随便就给你举出例子来
比如说Mongrel的-d选项在Windows下是禁用的,因为Windows没有一个良好的daemon机制
比如说FileUtils.ln_s这个方法在Windows底下就不能用,尽管它真的很有用
比如Process.kill方法不支持Windows,因为Windows的进程管理做得完全不必要地复杂而难用
套一句您常说的话,有问题,解决它!!! 为什么这里却没有人解决了??? 当然,你会推说是windows 本身不开源的缘故
各有各的道,用不着歧视windows ,做桌面程序,rails 比得过windows forms吗? 哦,忘了,rails不是做桌面的
glchengang
2007-07-04
Rails初期使用是有一点中文问题,但很好解决的呀。楼主怎么还用GB2312,项目都应该向国际标准的UTF8靠拢。
siuying
2007-07-02
Rails 仍在发展期,完成度大概就像 J2EE 第一版或PHP3的时代。没有完整的 IDE 、不同的版本不相容、文档不齐全、可用的库不足或没人维护... 我
想這是使用最新技术的共通问题,但它确是一个能让开发更愉快更快速的好工具。只是用它的時候要有心理準備,有问题的时候很可能要慢慢看它的源码、或者自己动手 Hacks
想這是使用最新技术的共通问题,但它确是一个能让开发更愉快更快速的好工具。只是用它的時候要有心理準備,有问题的时候很可能要慢慢看它的源码、或者自己动手 Hacks
gigix
2007-07-02
shrpcn 写道
引用
整个Ruby on Rails社区说老实话就是歧视Windows用户。Windows本来就是一个糟糕的、不适合做服务器的操作系统,你为什么一定要用它做服务器?既然你要这么做,就为自己的选择付出代价吧:你会经常看到Ruby或者Rails的某个特性不支持Windows。
引用
我真的希望不要再看到类似这样信口开河胡说八道的废话
你能不能哪怕举出一个具体的论据来支持你的观点以便让别人知道你说的这句大话至少略微经过了你的大脑?
你能不能哪怕举出一个具体的论据来支持你的观点以便让别人知道你说的这句大话至少略微经过了你的大脑?
一样的问题,信口开河.
随便就给你举出例子来
比如说Mongrel的-d选项在Windows下是禁用的,因为Windows没有一个良好的daemon机制
比如说FileUtils.ln_s这个方法在Windows底下就不能用,尽管它真的很有用
比如Process.kill方法不支持Windows,因为Windows的进程管理做得完全不必要地复杂而难用
- 浏览: 306602 次
- 来自: 温州

- 详细资料
搜索本博客
我的相册
4
共 1 张
共 1 张
最新评论
-
如何在管理不规范的公司中 ...
如果你成了骨干,但是上司为了节约成本而故意不给你提高级别和待遇,最后变成“能者多 ...
-- by no_123 -
如何在管理不规范的公司中 ...
说漏了几个字,抱歉!影响项目的发展进度
-- by kayzhan -
如何在管理不规范的公司中 ...
新进去公司做管理,想改变这个公司的一些体制,因为现在的管理确实发现会项目的发展, ...
-- by kayzhan -
如何在管理不规范的公司中 ...
这就是一种企业文化,只是这种文化没有找到清晰的归宿 公司的目标是什么?应该以什 ...
-- by JavaJason -
如何在has_one这样的关联 ...
在belongs_to关系上面做cache比较容易,has_one的确要麻烦一些 ...
-- by robbin






评论排行榜