有人说,robbin你说了那么多RoR的优点,你啥时候说说RoR的缺点阿?你说的缺点肯定比别人说的更客观。没办法,为了表现出来我不是一个RoR粉,只好总结点缺点,以飨RoR黑子们:
Ruby和Rails的一些缺点的总结:
ruby的问题我觉得主要是:
1、ruby本身的性能是比较差的,无法直接做一些计算密集型的任务
比方说大量的分词运算、语料训练什么的,用ruby写是不行的
2、ruby的C扩展很难写
正因为ruby性能差,所以很多情况下要依赖C写的底层库,但是写ruby的扩展C库是很困难的事情。一方面没有特别多的资料介绍,你能参考的只有《Ruby Hacking Guide》,另外一方面Ruby是带有GC的语言,C又是没有GC的,所以如果你对ruby的GC机制没有特别清楚的了解情况下,写C扩展会出现意想不到的问题:比方说你写的程序逻辑没有任何问题,但是和ruby配合起来就会不定期的出现错误,这就是你C程序的某个赋值变量可能会被ruby GC以你意想不到的方式销毁。
3、ruby的C扩展库质量不高,容易出现内存泄漏问题
正因为上面的原因,很多第三方的C扩展库质量不好,很容易出现内存泄漏问题,这是一个很头疼的问题,你很难定位,也很难解决,只能尽量避免使用第三方扩展C库。
Rails的问题我觉得主要是:
1、特别容易出现命名冲突
你自己写的代码里面给类增加的方法,动不动就和Rails给类扩展的方法名称冲突了。这种错误很隐蔽,很难发现。这也是ruby语言动态性带来的一个负面影响
2、Rails每次升级API变动都比较大
Rails升级是不太考虑向下兼容性的,所以每次升级的话,可能你很多代码都要改,更糟糕的是很多Rails插件特别喜欢以hack rails的方式来扩展Rails功能,那么Rails一升级,插件的兼容性几乎肯定是不行的,这个是比较痛苦的事情。
3、Rails的view方面还是比较原始的erb拼接字符串方式,像JSP那样原始,没有一个类似Java的velocity/freemarker那样的页面模版库,所以写helper动不动要用字符串去拼html片断,如果是特别复杂的view需要拼的话,代码就会写的很丑陋。
当然总体来说,RoR还是让我感觉非常满意的,特别适合互联网应用。
分享到:
相关推荐
这份压缩包文件“Python和Ruby比较优缺点共1页.pdf.zip”可能包含了一个对比这两种语言特性和优缺点的单页PDF文档。虽然具体内容无法直接提供,但我们可以根据已知信息来深入探讨Python和Ruby的基本特性以及它们在...
Ruby语言的优点和缺点 Ruby具有以下优点: * 语法简单易学 * 面向对象 * 动态性 * 生产力高 * 社区活跃 然而,Ruby也有一些缺点: * 性能较低 * 内存占用较高 * 依赖管理复杂 * 文档不足 Ruby语言的未来发展 ...
:globe_showing_Americas: Ruby和Rails的IP地址匿名器 适用于IPv4和IPv6 旨在帮助遵守 入门 将这些行添加到应用程序的Gemfile中: gem 'ip_anonymizer' 匿名IP有两种策略。 掩蔽 这是: 对于IPv4,将最后一个...
在Ruby on Rails框架中,ActionPack是一个核心组件,它包含了控制器、路由以及处理HTTP请求和响应的工具。Action Cache是ActionPack的一部分,主要用于提高Web应用的性能,通过缓存Action的输出来避免重复执行相同的...
在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是这样一个工具,它是一个基于Edge Rails(Rails...
每种方法都有其优缺点,开发者需要根据目标平台、性能需求和部署环境来选择最适合的方案。同时,确保正确处理所有依赖和配置,以及测试打包后的应用在不同环境下的运行情况,都是这一过程中的关键步骤。
Rails 多文件上传插件是基于 Ruby on Rails 框架的一款插件,旨在实现多文件的同时上传,控制文件的格式、数量,并且兼容多种浏览器,包括 IE6、7、Firefox 等。下面是对插件的详细解释和使用说明: 插件特点 1. ...
标题 "excel lib ror ruby" 暗示我们要讨论的是在Ruby on Rails(简称RoR)框架中使用库来处理Excel文件的相关知识。RoR是一个流行的开源Web开发框架,而Ruby语言本身支持与Microsoft Excel文件交互,这在数据导入...
Rails是一个用Ruby语言编写的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,并且强调代码的简洁性和开发者的生产力。 **1.1 Rails是敏捷的** Rails的设计原则之一就是支持敏捷开发。它内置了许多...
综上所述,Ruby和Java各有优缺点,选择应基于项目需求、团队技能和现有基础设施。Java以其稳定性和丰富的库适合大型企业级应用,而Ruby则以其高效开发速度和简洁语法吸引着初创公司和快速迭代的项目。重要的是理解每...
3. Rails 框架:Ruby on Rails 提供了一个强大的 web 开发框架,加速了 web 应用的开发。 4. 社区支持:Ruby 有一个活跃的社区,提供丰富的库和工具。 缺点: 1. 性能:与 Python 类似,Ruby 的执行速度也不快,...
1. **JRuby简介**:解释JRuby是什么,它是如何实现Ruby语言的,以及它相对于MRI(Matz's Ruby Interpreter)的优点和缺点。 2. **安装与配置**:详细步骤指导如何在不同环境中安装JRuby,并设置为Rails项目的默认...
Ruby的缺点在于相对较少的社区支持和资源,以及在性能方面同样不如编译型语言。 尽管这三种语言在游戏开发中都有其独特的优点和局限性,但它们共同的特点是易于学习和使用,特别是对于初学者而言。在实际选择时,...
不过,这些缺点并未阻止Ruby成为众多开发者喜爱的选择,尤其是在Web开发领域,Ruby on Rails框架的流行便是最佳例证。 #### 二、Ruby与Python的比较 尽管Python以其广泛的库支持和易学性闻名,Matz认为Python在...
Ruby on Rails的崛起使得迁移至Ruby的风险逐渐降低,因为随着社区的壮大和相关资源的增加,开发者可以更容易地获取帮助和学习资料。然而,作为一种相对较新的语言,Ruby在某些场景下的性能可能不及Java,而且在企业...
Rails是一个流行的Ruby web框架,它提供了许多用于构建高效和可扩展的web应用的功能。在Rails应用中,用户认证和授权是关键的安全组件,确保只有经过验证的用户才能访问受保护的资源。本篇文章将深入探讨两个常用的...
在前两版的内容架构基础上,第3版增加了对Rails 2中新特性和最佳实践的内容介绍。相比第2版中的内容,Rails 2增加了REST、资源、轻量级web service等新特性。本书涵盖了这些全新的内容,因此能更好地体现出Rails框架...