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

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

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

 
分享到:
评论
49 楼 westdoorsiman 2007-07-02  
Rails的软件应用在哪里,IBM,google?
48 楼 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的进程管理做得完全不必要地复杂而难用
47 楼 shrpcn 2007-07-02  
引用

整个Ruby on Rails社区说老实话就是歧视Windows用户。Windows本来就是一个糟糕的、不适合做服务器的操作系统,你为什么一定要用它做服务器?既然你要这么做,就为自己的选择付出代价吧:你会经常看到Ruby或者Rails的某个特性不支持Windows。

引用
我真的希望不要再看到类似这样信口开河胡说八道的废话
你能不能哪怕举出一个具体的论据来支持你的观点以便让别人知道你说的这句大话至少略微经过了你的大脑?

一样的问题,信口开河.
46 楼 caryl 2007-07-02  
westdoorsiman 写道
rails做做小网站还可以,离做软件还差不多十万八千里

正在用rails做软件,至少从目前情况看来,还没遇到大的问题。反而一些常用的功能rails都可以很方便的解决。
45 楼 gigix 2007-07-02  
westdoorsiman 写道
rails做做小网站还可以,离做软件还差不多十万八千里

我真的希望不要再看到类似这样信口开河胡说八道的废话
你能不能哪怕举出一个具体的论据来支持你的观点以便让别人知道你说的这句大话至少略微经过了你的大脑?
44 楼 westdoorsiman 2007-07-02  
rails做做小网站还可以,离做软件还差不多十万八千里
43 楼 gigix 2007-07-01  
zb1015 写道
jack说的不错,rails不用mysql,哈哈你不用试试,问题一大堆

就我们做过的评估而言,postgresql和sqlite的支持基本上和mysql没有区别。
42 楼 zb1015 2007-06-30  
jack说的不错,rails不用mysql,哈哈你不用试试,问题一大堆
41 楼 hideto 2007-06-30  
Rails1.2.3支持的数据库:
mysql postgresql sqlite firebird sqlserver db2 oracle sybase openbase frontbase
40 楼 gigix 2007-06-30  
ltian 写道
我晕倒了,连MS  sql server这样最普通的数据库都支持不了吗,一个开发框架难道还有数据库限制

整个Ruby on Rails社区说老实话就是歧视Windows用户。Windows本来就是一个糟糕的、不适合做服务器的操作系统,你为什么一定要用它做服务器?既然你要这么做,就为自己的选择付出代价吧:你会经常看到Ruby或者Rails的某个特性不支持Windows。
39 楼 wangdong 2007-06-29  
Windows Server + SQLServer + Rails
这个方案自己没好好评估能怪谁?
38 楼 lixigua 2007-06-27  
吵架了,技术人就是爱吵架啊。
gigix 大约是看到见到听到了太多项目为一个不存在的需求去做过多考虑的事情了。大家都在学习,都走了这个弯路。以Java的配置为例,为了未来可能的需求我们在上面花了太多精力。去年跟做C的项目,发现做C的兄弟们考虑问题就是不一样啊。他们尽量去考虑做现在需要的灵活,而不是假象的灵活 (本来C要配置化,灵活也不容易)。借此精神,我今年写点东西,发现容易多了。跑题了,呵呵。
“不存在的需求”确实是我们的大敌,设计时需要谨慎考虑。具体到楼主的案例,楼主没说起客户对系统的要求,所以不好说。也许客户就是要求 win,sql server怎么办?这个方面 ,很难说服他们的。
我们公司做一个数据仓库项目据说客户还要求在win上做呢(其他分公司实施,我只在打标期间听说 ,不知道后来实际怎么做 )。客户的这个要求很简单,他们的科技人员技能低,维护win方便,容易。而维护liuix,unix,他们有这能力的人太少。-----可知道他们还是商业银行啊,比起其他行业,总体上懂unix的人要多很多了啊。 
37 楼 yuyijq 2007-06-27  
其实这些问题不需要什么争论,正如Dave Thomas在那本经典的Agile Web。。。里所说的:作web的路子有很多,而Rails将最好的一种给你,选择Rails你就选择了Rails认为最好的路,你不想走这条路,那么也请不要选择Rails
36 楼 SteveGY 2007-06-25  
gigix 写道
jigsaw 写道
且让我跑个题。本帖通篇主旨是讲铁道上的鲁比,可我偏偏淫者见淫,满眼全是一位职业咨询师的精彩表演。

>> 合同是不是这么签的
没听说过哪单合同会因为咨询师的意见而_改_签的 所以这里轮不到你操心合同的合理性。

>>客户的数据库是不是最宝贵的
晕 这个都需要质疑?很好 你有怀疑一切的素养 可惜显然用错了地方

>>凭空说没有这些事情,是不负责任;凭空说有这些事情,同样是不负责任。
非常正确,的废话

>>至少我自己已经多次看到为了一个想当然的需求而凭空加大开发成本的例子了。
你见过,我也见过,这里大多数人都见过。说出来就很拽吗?
你这副口气,无非也就是_想当然_地把别人的产品/项目当作是_想当然_的需求。这不自己扇自己吗?

赫赫 我也就耍个贫嘴 千万别跟我一般见识

既然你都这么说了,还有什么好讲的呢,只好高呼您永远正确咯
正如我用红色标出来的,您的见多识广已经让我无话可说了。


不好意思,可能我的口气有问题,在论坛上,一开口,态度不好,就容易得罪人,呵呵。

其实,我们也可以注意到,rails确实就是规定了它自己的套路,或者是正确的套路,这种套路可以减少一些开发的规范问题,并且解决很多的实际问题,但这也一样限制了作为通用开发框架(或者规范,'specification')的适用性,我的理解是“适用性”(或者是通用性?)在rails框架的方法论上有缺陷,也许它从出生那天起就从来没有想过要成为“通用”的框架,这是我的一厢情愿,呵呵。这也许和rails目前发展的时间还不够长有关,有些东西很难勉强的,在适当的时间点之前,没有出现合适的解决方法,有一些很好的尝试会遇到挫折,这需要时间、耐心,等待它条件成熟。我的资源不够,我只能等待。

比如,我个人比较喜欢glassfish的设计结构和某些特性,grizzly http connector 和目录deploy特性等等,但到今天为止,我仍然不能把它作为一个可选的应用服务器发布到生产环境中去,因为那该死的glassfish V2还没有结束beta,在我的应用程序中关键的cluster仍然不稳定,而V1又不支持cluster,等着,我没有选择,还在用jboss 4.0.5。同样道理,ruby的ms sqlserver的驱动似乎看不到什么希望 ,不用安慰大家,事实如此,看看python上的sqlserver驱动,还有linux上的sqlserver连通性,除了jdbc,ms几乎不给任何的支持,所以我认为这件事情是没有希望的,ms不会配合的。这也是我跟踪jRuby和grails的原因,希望他们的数据库连通性应该是完美的。不过到今天为止,我对grails基于hibernate的ORM依然失望,估计他们的ORM特征表中的项目仅完成了30%,呵呵,不行,受不了,所以我耐心等待。所以我想,不管大家喜欢还是不喜欢ruby rails,在没有足够的资源时,只能等待,资源永远是有限的,还是利用有限的资源做些有用的事情吧。
35 楼 gigix 2007-06-25  
jigsaw 写道
且让我跑个题。本帖通篇主旨是讲铁道上的鲁比,可我偏偏淫者见淫,满眼全是一位职业咨询师的精彩表演。

>> 合同是不是这么签的
没听说过哪单合同会因为咨询师的意见而_改_签的 所以这里轮不到你操心合同的合理性。

>>客户的数据库是不是最宝贵的
晕 这个都需要质疑?很好 你有怀疑一切的素养 可惜显然用错了地方

>>凭空说没有这些事情,是不负责任;凭空说有这些事情,同样是不负责任。
非常正确,的废话

>>至少我自己已经多次看到为了一个想当然的需求而凭空加大开发成本的例子了。
你见过,我也见过,这里大多数人都见过。说出来就很拽吗?
你这副口气,无非也就是_想当然_地把别人的产品/项目当作是_想当然_的需求。这不自己扇自己吗?

赫赫 我也就耍个贫嘴 千万别跟我一般见识

既然你都这么说了,还有什么好讲的呢,只好高呼您永远正确咯
正如我用红色标出来的,您的见多识广已经让我无话可说了。
34 楼 jigsaw 2007-06-24  
且让我跑个题。本帖通篇主旨是讲铁道上的鲁比,可我偏偏淫者见淫,满眼全是一位职业咨询师的精彩表演。

>> 合同是不是这么签的
没听说过哪单合同会因为咨询师的意见而_改_签的 所以这里轮不到你操心合同的合理性。

>>客户的数据库是不是最宝贵的
晕 这个都需要质疑?很好 你有怀疑一切的素养 可惜显然用错了地方

>>凭空说没有这些事情,是不负责任;凭空说有这些事情,同样是不负责任。
非常正确,的废话

>>至少我自己已经多次看到为了一个想当然的需求而凭空加大开发成本的例子了。
你见过,我也见过,这里大多数人都见过。说出来就很拽吗?
你这副口气,无非也就是_想当然_地把别人的产品/项目当作是_想当然_的需求。这不自己扇自己吗?

赫赫 我也就耍个贫嘴 千万别跟我一般见识
33 楼 gigix 2007-06-24  
SteveGY 写道
???深刻??这有什么好“深刻”的?

“一定要坚持用Windows Server、用SQLServer”,很多时刻,这就是客户的实际应用环境,合同就是这么签的,你能不照做吗?客户真金白银买的操作系统和数据库,这就是理由。

“因为你把它宝贵的东西都扔掉了”,在客户看起来,他们的投资才是最宝贵的东西。

还有人提到了UTF-8的问题,听口气似乎别人用GB编码就是落后,哎~~~~,你们有用过U8编码的数据库吗?知道国内的拼音排序规则吧?在不同的操作系统上,你测试过这样的排序吗?拜托各位用windows的mysql或postgers在936编码的windows上测试一下,当数据库使用u8编码的时候的排序,再同样的测试一下,在用u8编码的linux(Debian, Ubuntu或rh,甚至solaris 10)系统上,使用u8编码的mysql或postgres的数据库中文排序的结果。试一下,看看结果,再说话。还可以了解一下GBK, GB18030和Unicode组织之间的历史关系,你会发现,我们又多了N个痛骂技术官僚的理由。要解决这个问题,还得为linux系统添加utf-8.pinyin的排序规则,这个排序目前由国内某个人在维护,也是最近才有的库。

从你自己的回帖也看得出来,合同是不是这么签的,客户的数据库是不是最宝贵的,应用程序是不是需要按拼音排序,这些都是需要去确认的。凭空说没有这些事情,是不负责任;凭空说有这些事情,同样是不负责任。如果确实有这些事情,确实它们价值很大,为了它们来加大开发成本也是合情合理的事。但我的重点是:有没有充分论证这些需求的合理性。至少我自己已经多次看到为了一个想当然的需求而凭空加大开发成本的例子了。
32 楼 SteveGY 2007-06-24  
caryl 写道
gigix 写道
steve_gu 写道
gigix 写道

因为你把它宝贵的东西都扔掉了

jack是被逼的

我知道
但他的困境,仍然是很可讨论的。如果真的为这些问题,像他说的,卡了几个月,那是多大的成本浪费?出于什么样的考虑,可以浪费如此大的成本,而一定要坚持用Windows Server、用SQLServer、用GB2312编码?这个决策本身就是很可商榷的。


相当深刻。

???深刻??这有什么好“深刻”的?

“一定要坚持用Windows Server、用SQLServer”,很多时刻,这就是客户的实际应用环境,合同就是这么签的,你能不照做吗?客户真金白银买的操作系统和数据库,这就是理由。

“因为你把它宝贵的东西都扔掉了”,在客户看起来,他们的投资才是最宝贵的东西。

还有人提到了UTF-8的问题,听口气似乎别人用GB编码就是落后,哎~~~~,你们有用过U8编码的数据库吗?知道国内的拼音排序规则吧?在不同的操作系统上,你测试过这样的排序吗?拜托各位用windows的mysql或postgers在936编码的windows上测试一下,当数据库使用u8编码的时候的排序,再同样的测试一下,在用u8编码的linux(Debian, Ubuntu或rh,甚至solaris 10)系统上,使用u8编码的mysql或postgres的数据库中文排序的结果。试一下,看看结果,再说话。还可以了解一下GBK, GB18030和Unicode组织之间的历史关系,你会发现,我们又多了N个痛骂技术官僚的理由。要解决这个问题,还得为linux系统添加utf-8.pinyin的排序规则,这个排序目前由国内某个人在维护,也是最近才有的库。
31 楼 seamon 2007-06-22  
看了楼主的描述,感觉好象故意跟自己过不去似的。
30 楼 fnet 2007-06-22  
恩,Symfony效率比较差,cakePHP好一点,但是也不是太好。怎么说呢,php的开发框架国内有两款还不错,很轻量级。很好学

相关推荐

    重构你的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