rails3.1.1版本做了比较大的改动,其中使用了第三方的gem包(其实我希望rails的核心越简单越好),基于cruby做升级也许比较容易,但是在jruby下还是遇到不少问题.下面列出来:(硬件平台windows xp)
一、jruby的版本设定为1.9
1.9.2是ruby的最新版本,与1.8.7 有一定的不同,在实际开发中,感受到最大的不同是hash的表示方法:比如在1.8.7 ,一个哈希的标准表示方法是symbol+内容,形成kv的组合,如 {:name=>'tom'},symbol的位置使用字符串也是可以的,如{'name'=>'tom'}
但是在1.9.2中,hash的表示方法有所变化
一是兼容1.8.7的symbol的表示方法
二是有更加简单的表示方法 如{name:'tom'}
目前一些插件已经基于1.9.2在做开发,比如mongoid,mongoid.org中的许多案例都是采用1.9.2特有的表示方法。
设定环境变量JRUYB_OPTS
set JRUBY_OPTS=--1.9
这样即可将jruby的运行环境改为1.9,如果希望改回来,照此办理设置为1.8即可;
你可能在1.8.7下已经安装了大量的gem包,在1.9.2的环境下,这些gem包都不能使用了。(有一个思路可以将1.8的gem包都复制到1.9的目录下,简单测试,似乎可以)
二、gem升级到1.8.0
在设定1.9.2环境的时候,安装gem的升级包存在一定的问题;
采用如下方法,似乎比较有效:(gem undate system经常性不奏效)
在1.8环境下,gem install rubygems-update
提示安装完毕后,执行update_rubygems,可完成升级
gem -v#返回版本号
三、gem包不能安装或者
gem包放在amazon的云存储中,而这个云存储与墙有过节,所以被墙了。大家只好使用vpn或者代理。
使用代理的时候,设置环境变量 set http_proxy=http://IP地址:端口号
然后就可以安装了。
或者还有一种方法:使用bundle install,在gemfile中将需要的gem包加入其中,重新设定source,如下:
source 'http://production.cf.rubygems.org/'
这种方法的不好处在于需要bundler,这个东西必须先升级,而这个gem包经常伴随rails的安装。也就是你需要首先安装rails。呵呵,这有点鸡和蛋的问题。
gem安装包的时候,出现文件目录错误的问题
gem包已经是1.8,ruby环境是1.9.2,这时候安装gem包的时候,出现文件目录错误的问题或者参数过多的问题。
解决方法是修改两个文件:
1、在jruby\lib\ruby\site_ruby\1.8\rubygems.rb 文件的 self.find_home 方法里,修改后即可。
在self.find_home中修改
File.expand_path "~"
为:
File.expand_path "."
即可
2、修改D:\jruby\lib\ruby\site_ruby\1.8\rubygems\package\tar_input.rb,将
args << { :external_encoding => Encoding::UTF_8 } if
Object.const_defined?(:Encoding)
注释即可。
四、运行过程中same file的问题
rails s运行起来之后,在浏览器输入url,出现如下类似的错误:
ActionView::Template::Error (same file: I:/Udisk.bak/jruby_app/octface/tmp/cache
/assets/sprockets%2Fa6a1d73891c8d2907c281bdff057632a.3364.58668 and I:/Udisk.bak
/jruby_app/octface/tmp/cache/assets/D0E/170/sprockets%2Fa6a1d73891c8d2907c281bdf
f057632a)
可以在命令行下使用
rake assets:clean
清除前面曾经留下的缓存内容。
五、execjs运行环境的问题
rails3.1.1的应用中需要coffee-rails这个插件,这个插件有如下包的依赖关系
coffee-rails(assets)=>coffee-script(run)=>execjs(run)=>therubyracer(develop)=>libv8(run)
而这个libv8需要c 扩展的
在bundle install的时候,由于gemfile存在如下的配置:
group :assets do
gem 'sass-rails', '~> 3.1.4'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
按照缺省的方式,bundle install会循着上面的依赖关系安装libv8,最终出现bundle install错误。
假设将coffee-rails注释掉,则又会出现execjs缺乏运行环境的错误。
解决方法:
在gemfile中增加
gem 'therubyrhino'
这个therubyrhino'是therubyracer的替代品,但是依然可以提供execjs的运行环境。
最后谈一点感受,rails3.1.1使用了过多的依赖包,而一些依赖包已经不是原生的ruby代码,这对于兼容性来说是有伤害的。
补充:
最新的jruby1.6.5出来后的几点说明:
1、融合将gem库融合。之前的版本,对于ruby1.8.7和1.9.2,放在不同的gem包目录下,现在好了,两个版本的gem融合在一个目录下。
2、使用1.9.2的时候,xp下,gem安装已经不需要前面说的这么复杂:比如需要修改rubygems.rb这个文件(jruby的gem已经是1.8.9版本)。但是在vista下,仍然需要修改rubygems.rb(太神奇)
分享到:
相关推荐
codemirror版本:https://codemirror.net/5/doc/releases.html
外国电影演员识别系统源码分享
mf3010 打印扫描一体机驱动管理软件。
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
chrome-headless-shell-linux64-135.0.7004.0 (Canary).zip
DeepSeek大模型介绍与展望.pptx
英特尔的公版原理图和PCB,cadence版本
《单容水箱液位精准调控:模糊控制策略的深度研究与复现》,单容水箱液位随动系统的模糊控制研究 模糊控制lunwen复现 期刊:化工与自动化仪表(2021年) 图1为结构图,图9为原文结构图, 版本不一样,器件略有调整 图7为结果图,图8为原文结果图 ,单容水箱液位;模糊控制;研究;论文复现;期刊;化工与自动化仪表;结构图;结果图;版本差异;器件调整,"模糊控制研究在单容水箱液位随动系统中的应用与复现"
一个windows上使用的搜索小工具
内容: 这份数据集包含了来自国际大洋发现计划(IODP)第342航次站点U1405、U1406、U1407、U1409和U1410的浮游有孔虫碳酸盐团簇同位素、稳定氧和碳同位素,以及沉积物中的GDGT(甘油二烷基甘油四醚)和烯酮数据。这些站点位于北大西洋的新foundland脊(U1407、U1409和U1410)和J-异常脊(U1405和U1406),用于创建覆盖整个新生代的几乎连续但低分辨率(约每92万年一个样本)的数据拼接,并重建了碳酸盐团簇同位素、TEX86和UK'37海表温度。每个样本包含20立方厘米的沉积物,覆盖2厘米的核心深度区间。年龄模型主要基于详细的船上生物-磁性地层学研究(Norris等,2014)。然而,在40.8 Ma至44.8 Ma时间段内,使用了Cappelli等人(2019)更新的U1410站点年龄模型,通过与U1408站点的年龄模型对比来确定。 访问此数据集,请点击这里:"" ()。
厨房用品分割系统源码&数据集分享
.
监控鞋类物品检测系统源码分享
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
曲线图异常波形检测系统源码分享
内容概要:本文介绍了动车组车号自动识别的现状及其存在的问题,提出了基于图像识别技术的新方法。文中详述了传统人工识别与RFID识别方法的不足,重点阐述了一种新的图像识别系统的设计与实施方案,该系统能够实现在多种恶劣环境下高效精确地获取动车组车号,并通过实际案例展示了这套系统的优势以及其在铁路行业的广阔应用前景。 适用人群:从事铁路运输管理、轨道交通系统开发维护的技术人员,尤其是负责动车组调度、监控及维修工作的相关人员。 使用场景及目标:①用于替代现有人工记录与RFID标签方式,提升动车组车号识别精度与效率;②适用于各种天气状况下的户外作业场景;③旨在构建更加智能化、信息化程度更高的铁路运输体系,助力智慧动车段建设。 其他说明:文中还包括具体的实验对比和技术细节分析,如不同的开机触发装置选择、图像采集设备参数设置、补光措施及识别算法的设计,强调了实际应用场景中可能遇到的问题以及相应的解决方案。
基于AnythingLLM框架和Ollama环境本地运行deepseek,并可以通过用户自己的文档来针对性地回答用户问题,用户也可以上传文件来构建模型回复问题所需要的所有参考资料的知识库,使得模型相对于在线模型更加专业地解答用户的问题。同时本地部署保证了隐私性和针对性。
指针式表盘指针关键部位分割系统源码&数据集分享
多策略增强:MWOA鲸鱼优化算法与其他变体及2024年最新算法的实证比较与结果分析——新颖策略实施效果显著且复杂度无增加的研究,多策略改进的鲸鱼优化算法(MWOA),与其他三种变体和几种2024最新算法比较,策略都是很新颖的策略,可以直接写了发文章,并且没有增加复杂度上改进效果 ,MWOA; 变体算法; 最新算法; 策略新颖; 复杂度未增加; 改进效果显著,"多策略改进MWOA算法:与多种变体及2024新算法比较展示优越性"
织物缺陷检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]