`
jack
  • 浏览: 393125 次
  • 来自: 温州
社区版块
存档分类
最新评论

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的书上,是从未提起过。三个问题,随便哪个问题解决不了,项目就完全流产了。使用新技术的整个过程中,风险依然很大。回头想想,还真是汗颜。

   论坛上有不少的同学经常想在公司里面推广新技术,新方法。我这里奉劝一句, 除非你已经用这个新技术,新方法做过好几个项目,方方面面问题都遇到过了,否则不要去推广。很多细节,只有做过,遇到过,才能够明白,理解和解决的。一些看上去不注意的细节角落,往往就是一个项目杀手隐藏在那里。当心啊当心。
   
 

 
分享到:
评论
69 楼 ray_linn 2007-08-20  
gigix 写道
ray_linn 写道
据说microsoft最近刚力挺开源了,www.codeplex.com后台老板。倒是mysql最近对源代码发布做了些修改了。

PS: microsoft web software factory和smartclient software factory都提供源代码。

关键不是源码,而是做事的态度
微软的老大们做出来的东西往往它就跟我等平头百姓的习惯不匹配
从MSN Spaces到Team System,莫不如此


你是在说中美的社会制度对国民经济的促进作用么....类比一下。

ps:

我读了林芷馨(DD还是MM? mm介绍给我认识吧?) 的那两本书了,窃以为应该写成300页的小册子,精炼更好。
68 楼 gigix 2007-08-20  
ray_linn 写道
据说microsoft最近刚力挺开源了,www.codeplex.com后台老板。倒是mysql最近对源代码发布做了些修改了。

PS: microsoft web software factory和smartclient software factory都提供源代码。

关键不是源码,而是做事的态度
微软的老大们做出来的东西往往它就跟我等平头百姓的习惯不匹配
从MSN Spaces到Team System,莫不如此
67 楼 ray_linn 2007-08-20  
gigix 写道
ray_linn 写道
gigix 写道
微软做这些东西阿,我就只好呵呵,呵呵……
人家是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都提供源代码。
66 楼 gigix 2007-08-20  
ray_linn 写道
gigix 写道
微软做这些东西阿,我就只好呵呵,呵呵……
人家是convention over configuration,微软是“我定规则我就赢”


没办法,你靠ruby吃饭(偶看过你写的序了),偶靠microsoft赚钱,大家就别互相鄙视了。

monorails不是microsoft,是castleproject的,它就是.net的spring,远迈spring.net

一个东西两种表述,曹操刘备,哪个是王道鬼才知道。

然则,.NET的开源社区一向被官方鄙视阿……
过两天Micro.我的地盘我作主.soft就可能弄出一个形似而神不似版本的monorails杀手……那个什么Team System,已然把我伤害了亚……
65 楼 ray_linn 2007-08-20  
gigix 写道
微软做这些东西阿,我就只好呵呵,呵呵……
人家是convention over configuration,微软是“我定规则我就赢”


没办法,你靠ruby吃饭(偶看过你写的序了),偶靠microsoft赚钱,大家就别互相鄙视了。

一个东西两种表述,曹操刘备,哪个是王道鬼才知道。


ps:

monorails不是microsoft,是castleproject的,它就是.net的spring,远迈spring.net。俺只想说,rails不是ruby独有,其实想想也就是种弹性和便捷间的取舍。
64 楼 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那节删掉了重写了一个。

微软做这些东西阿,我就只好呵呵,呵呵……
人家是convention over configuration,微软是“我定规则我就赢”
63 楼 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那节删掉了重写了一个。
62 楼 glchengang 2007-08-17  
弃文字处理的国际标准utf8不用,而选gb2312,自找麻烦。
MySQL 免费又速度快,偏偏要去选死贵的M$ Server,不解。
Linux做服务器多好,偏偏要布署到windows,唉!!!
61 楼 gigix 2007-08-17  
flash 写道
特别是一些小项目,很多小公司都是用一台服务器跑很多应用,有java,有.net,有php,除非你能说服客户再拿钱买一台服务器,不然还是老老实实在win上跑吧

有一个很明显的事实
这样的项目是出不起钱请我去做的
60 楼 flash 2007-08-17  
gigix 写道
jjx 写道
套一句您常说的话,有问题,解决它!!! 为什么这里却没有人解决了??? 当然,你会推说是windows 本身不开源的缘故

各有各的道,用不着歧视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,得到的回复是:请按我们的要求做,如果做不到,我们就换别的公司.
我非常理解楼主,环境不是我们能完全决定的,或许你的公司在与客户打交道的时候,有足够的资本和能力说服客户完全听从你们的建议,这就是另一码事.在我们不能说服客户的时候,我们能怎么样呢?放弃这个项目,还是顶着困难上?我想大多数公司都会选择后者,因为至少在国内,敢对客户说不的公司,实在是太少了,特别是一些小公司,生存环境已经很恶劣了,你还敢说不这个"不"字来吗?
所以我非常感谢楼主,能够把自己遇到的问题及时的告诉我们这些后来者,让我们少走弯路,或者应该是某些人眼中楼主没有选择正确的环境,已经是在走弯路了,但起码当我们不得不走上这种弯路的时候,有了楼主的提示,我们可以少转几个弯.
跟贴的很多人都有着丰富的项目经验和深厚的技术底蕴,但是很少有人考虑客户这方面的因素,都是单纯的从技术角度看问题.我们做技术的目的是干什么?说白了不就是服务客户吗?或许你的客户很优秀,能听的进正确的建议,但请不要忘记,那种不懂装懂刁蛮无理的也不少见,当遇到这种客户的时候,我个人感觉,说服他们更换服务器和数据库的难度丝毫不比说服小泉不参拜靖国鬼社低!
59 楼 flash 2007-08-17  
weiqingfei 写道
gigix 写道
lakeeye2002 写道
自我学习以来,RAILS其快速的开发进程令人鼓舞,尽管还有很多需要完善的地方,但是我可以理解,毕竟这是一个事物发展的必经阶段,似乎到目前为止,还没有一种完善到零风险的工具.存在的,有其合理性.

Rails的快速,很大程度上是因为它缩小了你的选择空间,从而节省了作出选择的成本:它告诉你一个好的网站应该怎么做,你就照着这个套路做就是了。黑话这个就叫convention over configuration。有效缩小选择空间需要信息,这些信息就是“如何开发网站”的知识。Rails之所以快,因为它提供了更多的知识。
所以,如果你不用这些知识,它没办法让你继续快起来也就是很正常的。


这就是刀和镰刀的区别

精辟!
58 楼 wf_galen 2007-08-17  
项目的成败不在工具如何,关键在人,还有论坛中有些人自认为用了几天linux就觉着了不起,老子天下第一,鄙视!有本事你自己写个出来,哪怕赶上windows百分之一。
当然工具的选择对项目的开发进度会有一些决定作用,但不是绝对的,同样用c,别人可以写个操作系统,有的人....。照这里某些人的口气,c本来就不该来到世界上。
  对一门语言没有完全了解之前,请不要妄谈优劣,以免误导别人,也省的让高手看了笑话。
  请记住:存在既合理。
你做不到,只是说明你菜,别的....最好想好再说!
57 楼 Transformers 2007-07-20  
在公司推广任何框架都是一样的具有风险,首先项目中得有人非常熟悉框架,能降低风险。
56 楼 yueximing 2007-07-19  
win + ROR +ms sql我不觉得有什么不对劲 我现在也在开发一个网站 我觉得ROR的效率还是很高的
lz的问题我也碰到过 用了2天多解决了 解决方案可看我的博客 yueximing.tianya.cn 遇到问题不要紧 关键是你得有能力解决它!
55 楼 seacolor 2007-07-05  

其实请楼主想想,为什么要选择 Win+RoR+mssql 这个方案? 对于一般的web业务,Win + .net + ms sql 完全绰绰有余。 如果 Win 和mssql不能丢弃,完全没有必要用 ROR。

54 楼 gigix 2007-07-04  
jjx 写道
套一句您常说的话,有问题,解决它!!! 为什么这里却没有人解决了??? 当然,你会推说是windows 本身不开源的缘故

各有各的道,用不着歧视windows ,做桌面程序,rails 比得过windows forms吗? 哦,忘了,rails不是做桌面的

当然有人尝试解决这些问题,Java不就是吗?不管你用Linux还是Windows,Java表现出来的功能都是一样的。
效果怎么样了呢?操作系统有那么多好东西,为了追求跨平台,只取用一个最大公约数。结果把几乎所有操作系统已经提供了的功能重新用Java实现一遍。当然这样确实解决了问题。成本有多高?收益又有多大?到底有多少人真的在用Windows做服务器?他们真的不能换掉Windows吗?
Ruby/Rails社区选择了另一种解决问题的思路,另一种价值观。如果你不欣赏这种价值观,你也歧视Rails好了。
53 楼 netfishx 2007-07-04  
ls你这是为了抬杠而抬杠吧?windows本身就是有这样的问题,歧视它怪的着别人吗。后面举的例子更是胡说八道
52 楼 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不是做桌面的
51 楼 glchengang 2007-07-04  
Rails初期使用是有一点中文问题,但很好解决的呀。楼主怎么还用GB2312,项目都应该向国际标准的UTF8靠拢。
50 楼 siuying 2007-07-02  
Rails 仍在发展期,完成度大概就像 J2EE 第一版或PHP3的时代。没有完整的 IDE 、不同的版本不相容、文档不齐全、可用的库不足或没人维护... 我

想這是使用最新技术的共通问题,但它确是一个能让开发更愉快更快速的好工具。只是用它的時候要有心理準備,有问题的时候很可能要慢慢看它的源码、或者自己动手 Hacks

相关推荐

    重构你的Rails程式码

    ### 重构你的Rails程式码 在进行Rails版本升级时,重构代码是一个绝佳的机会。本文将深入探讨为何这是个好时机来进行重构,并提供一系列实用的方法帮助您优化代码。 #### 为什么这是一个好时机重构代码? 1. **...

    mini-rails:仅有600行代码的精简版Rails,可作为学习Rails原始码的向导-代

    但二进制文件太多,核心代码都没没在大量细节实现中,全部看完不现实,走马观花又很难领会精髓;纸上得来终觉浅,眼过千遍,不如手过一遍,干脆重新造个轮子;于是就有了mini-rails,参照Rails原始码,省略细节,...

    rails_exception_handler:Ruby on Rails的异常处理

    如果您不熟悉Rails,请不要感到害怕,设置起来并不难。 异常处理程序使您可以通过ActiveRecord或HTTP POST将错误消息中的关键信息保存在某个地方的数据库中,并在应用程序布局文件中向用户显示自定义的错误消息。 ...

    jungle-rails:使用Ruby on Rails构建的电子商务应用程序

    丛林很难找到可以向朋友炫耀的独特产品吗? 欢迎来到丛林。 奇怪的是新常态。 Jungle使用Rails 4.2构建,为您带来无与伦比的电子商务体验,改变了您对在线购物的思考方式。最终产品技术一个使用Rails 4.2构建的电子...

    yay:Ruby和Rails的SmartHR新手训练营

    但是,很难深入了解Rails。因为要了解Rails,您首先需要了解Ruby。与任何语言和任何WAF一样,了解语言的特征并理解WAF在您脑海中的移动对于掌握WAF至关重要。 在上半部分,有一门Ruby课程首先要了解Rails。在下半年...

    concurrent_rails::joystick:小型图书馆,可让并发Ruby和Rails一起玩

    问题在于Rails不能很好地使用它。 Rails有一种复杂的线程管理方式,称为Executor,并发-ruby(最具体地说是 )无法与之无缝配合。 这个gem的目标是提供一个简单的库,使开发人员无需担心Rails的Executor和随之而来...

    rails登陆画面(原)

    解压后是一个exe文件,至于怎么将系统的替换为这个,相信难不到大家的哈 博文链接:https://msdn.iteye.com/blog/164888

    rex:Rails 中的 React 示例

    在 Rails 中使用 Jest 和 React 应该是很棒的立方体……但它似乎很难。 介绍 最近,作者处于一个遗留项目想要在保留 Rails 后端的同时重新设计前端的情况。 该项目决定随着时间的推移逐步进行基于 React 的重新设计...

    dynosaur-rails:[不推荐使用] https的Web界面

    我们(Harry's)已决定弃用Dynosaur-rails,并将Dynosaur变成配置有YAML文件的无头控制台应用程序。 我们只是发现很难维护Web应用程序,让首页报告/状态功能在一年左右的时间内未开发,并且总体上感觉它没有什么...

    成长:Ruby on Rails的可持续架构

    成长 Ruby on Rails是Shopify上Web应用程序的首选框架。 它是经过认可的堆栈,可用于快速,轻松地开发需要使用关系数据库,HTTP服务器和HTML视图... 我们将推荐一组简单但实用的抽象和实践,这些抽象和实践可在Rails

    sample-reactjs-app:从头开始创建具有react.js支持的Rails应用的简短教程

    好的,让我们开始制作一个简单的Rails应用程序。 rails new SampleReactApp cd SampleReactApp 让我们添加一些宝石开始。 在您的gemfile中,添加这些基于React的宝石。 # Just for making the views nicer gem '...

    upgrow:[镜像] Ruby on Rails的可持续架构

    成长 Ruby on Rails是Shopify上Web应用程序的首选框架。 它是经过认可的堆栈,可用于快速轻松地开发需要使用关系数据库,HTTP服务器和HTML... 我们将推荐一组简单但实用的抽象和实践,这些抽象和实践可在Rails应用程

    binterest:Rails 中的 Pinterest 克隆

    RoR 概念(环境设置可以说是 rails 中最难的部分,但使用更容易) MVC 导轨上的 完全响应(在桌面上更改浏览器大小以查看响应能力) 用户身份验证,通知与 jQuery 集成 集成(用于照片动画) 用于图像托管的集成...

    rails-iframe-resizer

    Rails 的 iframe 调整器用于Rails 包装用法在 application.js 中,添加: // for host//= require iframeResizer.min// for iframe client//= require iframeResizer.contentWindow.min 去掉js ...很难嵌入到rails中。

    关于Ruby on Rails路由配置的一些建议

    本文将详细介绍Ruby on Rails中的一些路由配置建议,包括如何有效地使用RESTful路由、成员(member)和集合(collection)路由、嵌套路由以及命名空间路由等。 #### RESTful路由 在设计API时,通常推荐使用RESTful风格...

    foundation_form_builder:用于 ZURB Foundation 的 Rails FormBuilder

    基础表格生成器 这个宝石有什么用?... 到目前为止,它仅在 Rails 4.2 和 Ruby 2.2 上进行了测试,但如果不太难的话,我很乐意同时支持 Rails 和 Ruby 的旧版本。 听起来很棒! 我如何使用它? 以通

    muchtodo:rails 练习应用程序——一个简单的待办事项列表(Rails)

    这是我的第一个非教程引导 Rails 应用程序! 这是一个简单的待办事项列表,仅用于学习目的,但它仍然非常具有挑战性。 你可以玩它。 我没有包含用户登录/身份验证的内容,因为我希望这是一个为期一周的项目,而且...

    actions_as_textcaptcha:Rails的基于文本的逻辑问题验证码

    它们很容易被人类解决,但机器人很难破解。 您还可以根据自己的问题配置gem。 作为替代方案,也可以作为处理任何API问题的备用。 由于基于逻辑的验证码为什么是个好主意的原因,请访问 。 要求 > = 2.5 > = 4 ...

    rails4patterns-codeschool

    rails4patterns-codeschool级别 1:模型胖控制器不好很难明白业务逻辑未封装更多代码冲突新功能难以实现避免从回调中调用其他域对象回调是在对象生命周期的特定时刻被调用的方法。 在回调中引用其他模型: 引入紧...

    a_rails_start_up_omakase:用于启动的预配置Rails应用程序,主要用于oauth,部署和维护

    Rails启动Omakase这些代码整理完善自我八月到九月开发的喜感网第一版的基础部分的代码,同时也是第二版的基础,希望这里面的代码能对他人快速PS:部署和运维比开发难多了...这个repo另一个目的是记录我对rails app...

Global site tag (gtag.js) - Google Analytics