得益于Rubyforge.org汇聚了这么多优秀的rails开源项目,在开发中有丰富的选择,而不比重新发明轮子.
有些插件是用纯ruby写的,可以下载解压缩到vender/plugins目录下,ruby的类加载器找到并直接使用
而有些插件的底层是用C写的,需要在部署平台上进行编译,如我常用到的解析xml的插件"Hpricot",安装过程中需要进行本地编译
而本地开发后部署到生产环境,忘记了安装必须的插件的事情也时有发生
另外一种情况是版本问题,以Hpricot举例,从Hpricot0.5升级到0.6,对xml节点元素查找开始区分大小写,记得当时为了版本不兼容问题着实费了一番功夫,而部署环境版本不匹配也是常有的事情.
我的办法是利用gems的版本管理功能在rails启动时检测必要的插件,在config/environment.rb文件中写如下代码:
ruby 代码
如果不是rubygems的外部依赖软件怎么办?还是可以借助gems提供的版本管理模块写:
ruby 代码
-
-
-
-
-
-
- cur_sqlite3 = `sqlite3 -version`
- req_sqlite3 = Gem::Version.create('3.3.5')
- unless Gem::Version.create(cur_sqlite3) >= req_sqlite3
- raise RuntimeError, "sqlite3 3.3.5 or late required."
- end
这样在启动时,如果没有满足依赖条件,webrick或者mongrel会马上raise一个异常到comsole上,并附带了版本要求信息.