原来的系统用的是rails 3.0.4, 出于对提高js开发效率的考虑, 想升级rails 3.1.0以上版本, 不过由于原系统插件绑定的太深了,许多功能都不能适应到rails 3.1的升级, 最后放弃对rails 3.1的升级, 但事实上rails 3.1确实有一些新的特性功能, 值得一用.
一些对rails 3.1兼容的插件问题:
rails 3.0.4使用可以使用mysql2(0.2.6), 但rails 3.1更新了activeRecord的一些方法, 需要使用 mysql2 新版本(0.3.x)来支持.
最佳方式是升级mysql到5.5, 但代价会很大.
param[:id] 是rails通过get/post传过来的参数, rails 3.0.4自动解析成integer, 而rails 3.1.1则解析成string
因此在controller的代码上需要做一些转型. 如: id = param[:id].to_i, 而不是id = param[:id]
rails 3.1+的will_paginate仍然不能使用git上的master版本. (当前的版本是3.0.2), 而要使用:
"gem 'will_paginate', '~> 3.0.pre2'"
rails 3.0.4中的用 form_for(@user) 生成html时, 对于 submit()的helper, 会生成 <input type="submit" id="user_submit" ... />
rails 3.1.1中则是: <input type="submit" id="submit" />
所以特别是使用了cucumber及Capybara时, 则需要修改场景中所有与submit的id相关的代码, 不然会出错不通过.
- attr_cleaner插件不支持rails 3.1.1
之前用attr_cleaner来自动strip一此param参数, 不过attr_cleaner标明只支持acitiveRecord3.0的.
所以必须放弃此插件. attr_cleaner较简单, 可以自己写一个model的filter的.
rails 3.1.0有assets的概念, 而rails 3.0.4没有这个概念, 所有的资源文件都放在public路径下, 所以使用assets, 将会让你对静态资源, 如css, js, image的存储策略作适当的调整, 这个需要花一定的时间去理解整个assets的概念, 并调整原系统.
如rspec升级到最新版本(2.7), devise可升级到最新版本, sunspot没有受到影响, i18n没有变化.
还有其他问题, 因为最后放弃升级系统, 没有往下研究.
如果原系统绑定太多的插件, 则会影响到rails的升级. 必须权衡rails新功能与系统的直接关系, 做出选择, 并放弃一些插件的使用.
不过rails 3.1还是有一些吸引人的东西,之前总是争论到底js文件要不要按插到页面中, 后台代码要如何融合到js中, 以及不同页面的js要用什么的策略去分开调用等,
assets和coffeeScript比较好的解决这个问题.
可以参考这个PPT, 简短介绍了rails 3.1 吸引人的地方:
InfoQ也有人作了很好的分析:
作者Mirko
Stocker译者李永伦发布于
2011年9月19日
前段时间,Ruby on Rails组发布了最受欢迎的Ruby Web框架的3.1版本,时间几乎是上一个主要版本Rails
3.0发布一年之后。这个版本包含了以下重要特性:
- Assets Pipeline
- 流
- 可逆迁移
- 把jQuery作为默认的JavaScript库
Assets Pipeline是Rails的主要更新,有个完整的指南讲述了如何使用它以及它能做什么:
Assets Pipeline提供一个框架串联并缩减或压缩JavaScript和CSS。它还允许通过其它语言编写它们,比如说,CoffeeScript、Sass和ERB。
Assets Pipeline也是David Heinemeier Hansson在RailsConf上的演讲内容。
流是指Rails现在支持HTTP流了,也被称作块状传输编码。流的优点是Web服务器可以在它完全计算完毕之前开始传输。Rails组在他们的博客上解释了流的好处:
流没有减少延迟,也没有减少生成动态响应所需的时间。但因为应用程序立刻发送内容,而不是等到整个响应渲染出来,所以客户端可以尽早请求内容。特别地,如果你刷新HTML文档头,将会以并行的方式获取CSS和JavaScript文件,与此同时,服务器会处理内容的生成。结果是页面加载更快了。
有个Railscast解释了如何为Rails应用程序设置流。
Rails已经支持向下迁移一段时间了,那么,为什么说可逆迁移是新的?到目前为止,你都不得不自己写向下迁移,但Rails 3.1现在可以帮你完成这部分工作。Rohit Arondekar解释其中的奥妙:
基本上,如果你在你的迁移里定义一个change方法(而不是之前的up和down方法),然后应用迁移,那么命令会照常执行。不过,在逆向迁移的时候,命令会被记录,然后生成一组反向命令并运行之。反向命令只是简单地把原来命令反过来执行。
这些只是Rails 3.1的一部分改变,发布说明里面还有很多等着你去发现。举个例子,强制SSL的配置选项现在支持了。要知道你的插件能否在3.1下工作,请查看railsplugins.org。
你打算升级你的应用程序吗?Austin Hughey在他发表到The H上的文章给出了一些建议。
InfoQ中文链接 :http://www.infoq.com/cn/news/2011/09/rails-31
查看英文原文:Ruby on Rails 3.1 Released, Brings Assets Pipeline, Streaming, and Javascript Changes
分享到:
相关推荐
swf_fu 使用swf_fu插件,Rails会将您的swf文件像其他任何资产... 如果要升级到Rails 3.1+,请删除插件! 安装 添加到您的Gemfile : gem "swf_fu" , "~> 2.0" 然后运行“捆绑安装”。 您还需要使用一些JavaScript
- **数值验证变得更加实用**:`validates_numericality_of` 方法之前可能存在一些问题,导致其在实际应用中的表现不尽如人意。Rails 2.0对此进行了优化,使得该方法变得更加可靠且易于使用。 - **自定义验证规则**:...
该gem打包了jQuery 插件,可轻松与Rails 3.1+资产pipleine一起使用。 它提供了所有基本的DataTables文件以及一些其他功能。 重要的 当前的gem已发布,没有更新的插件。 jQuery DataTables重命名了参数名称,如果要...
- **新的操作符**:Groovy引入了一些新的操作符,例如三元运算符的简化形式、范围运算符等,使代码更简洁。 **2.2 探索类型** - **基础类型**:Groovy支持整型、浮点型、字符串等多种基础数据类型,同时也支持复数...
人脸识别项目实战
深度学习教程和开发计划.zip
c语言学习
基本版贪吃蛇源代码.zip
项目资源包含:可运行源码+sql文件+ python3.8+django+mysql5.7+vue 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 Django==3.2.11 PyMySQL==1.0.2 djangorestframework==3.13.0 django-cors-headers==3.13.0 Pillow==9.1.1 psutil==5.9.4
Abaqus螺栓拧紧过程仿真 (1)螺栓螺母可实现参数化建模,全部采用六面体C3D8R单元建模 (2)施加边界条件实现螺母的拧紧过程,输出过程动画和应力、位移参数 (3)提取螺栓中部截面的轴力和螺母拧紧力矩之间的关系 ,Abaqus; 螺栓拧紧; 参数化建模; 六面体C3D8R单元建模; 边界条件; 输出动画; 应力位移参数; 轴力与拧紧力矩关系。,Abaqus螺栓拧紧仿真:六面体单元建模与力矩关系分析
标题基于SpringBoot的汽车售后服务系统及微信小程序的设计与实现AI更换标题第1章引言介绍汽车售后服务的重要性,SpringBoot和微信小程序的应用背景,以及本研究的意义和目的。1.1研究背景与意义阐述汽车售后服务市场的现状及发展趋势,SpringBoot和微信小程序在售后服务中的应用前景。1.2国内外研究现状概述国内外在汽车售后服务系统和小程序开发方面的研究进展。1.3研究内容与创新点介绍本文的主要研究内容,包括系统设计和微信小程序的开发,并阐述创新点。第2章相关理论与技术介绍SpringBoot框架、微信小程序开发的相关理论和关键技术。2.1SpringBoot框架概述阐述SpringBoot框架的特点、优势以及在系统开发中的应用。2.2微信小程序开发技术介绍微信小程序的开发流程、关键技术和功能实现。2.3数据库技术与系统设计讨论数据库设计原则、数据存储和处理速度的问题,并阐述系统设计的思路和方法。第3章系统需求分析与设计对汽车售后服务系统的需求进行分析,并设计系统的整体架构和功能模块。3.1需求分析从用户角度和业务需求出发,对系统的功能需求和非功能需求进行详细分析。3.2
在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。
c语言学习
人脸识别项目源码实战
人脸识别项目实战
内容概要:本文详细介绍了电力电子技术的基础知识及相关器件,内容涵盖电力电子器件(如晶闸管、GTR、IGBT)、相控整流电路(单相和三相)、直流斩波电路、交流变换电路、逆变电路、软开关技术等,并探讨了其应用场景(如开关电源、不间断电源(UPS)、电子镇流器、感应加热、直流电源、开关模焊接等),以及电力电子装置带来的电力公害(谐波污染、电磁干扰和功率因数降低)及其抑制方法。通过丰富的实例讲解了各类电路的工作原理和波形分析方法,旨在让学生和从业人员更好地理解和掌握该领域的核心技术和发展趋势。书中结合最新的研究成果进行了详尽阐述,使内容兼具科学性和创新性,并提供了大量习题以便于教与学。 适合人群:自动化、电气工程及其自动化等相关专业本科生、研究生和技术工程师。 使用场景及目标:①高校教师用于课堂授课,辅助学生深入理解电力电子器件工作原理;②电力电子领域科研人员和工程技术人员参考资料,掌握行业前沿技术和设计理念。 阅读建议:本文不仅讲解了电力电子器件的结构特点、操作流程,更重要的是展示了电力电子技术在整个电力系统和电气设备应用中的关键作用,希望读者能够在学习过程中理论结合实践,加深对知识的理解
c语言学习
万能视频拼接软件源码,可以直接进行修改增加功能,二次开发!
人脸识别项目源码实战
内容概要:本文介绍了FibroScan PRO这款专门用于肝脏纤维化程度评估的医疗器械。强调了其仅能被认证过的专员使用,所得到的数据需要专业医生综合考虑病人的实际身体状况进行精准解释。文中列举了若干组测量示例以及相关单位,例如压力数值(kPa)、声衰减参数(dB/m),还特别指出VCTE探针的正确性和精确度依靠定期校正。此外,详细阐述了病人的姿势调整以及测试部位选取的原则,在不同层厚的情况下对皮肤组织进行检查。并提供了一份详细的检查报告模板,涵盖了操作者的身份确认、受检人基本信息、时间戳以及其他一些量化评价指标,例如IQR(四分位距),这有助于更好地理解和应用FibroScan的检测结果。 适合人群:面向医院、诊所等相关医疗保健机构的工作人员,包括但不限于操作员和技术支持团队成员。同时也可以为想要了解这一先进诊断工具的研究人员或医学学生提供重要参考资料。 使用场景及目标:旨在指导医疗机构如何标准化地完成FibroScan设备的实际临床应用过程;确保所有测量数据均能在符合质量控制的前提下产生,并提高医疗服务的质量和效率;并且帮助医师做出更加科学合理的健康决策,最终服务于病患的利益最大化。