在rails启动时检查插件依赖关系

得益于Rubyforge.org汇聚了这么多优秀的rails开源项目,在开发中有丰富的选择,而不比重新发明轮子.
有些插件是用纯ruby写的,可以下载解压缩到vender/plugins目录下,ruby的类加载器找到并直接使用
而有些插件的底层是用C写的,需要在部署平台上进行编译,如我常用到的解析xml的插件"Hpricot",安装过程中需要进行本地编译
而本地开发后部署到生产环境,忘记了安装必须的插件的事情也时有发生
另外一种情况是版本问题,以Hpricot举例,从Hpricot0.5升级到0.6,对xml节点元素查找开始区分大小写,记得当时为了版本不兼容问题着实费了一番功夫,而部署环境版本不匹配也是常有的事情.
我的办法是利用gems的版本管理功能在rails启动时检测必要的插件,在config/environment.rb文件中写如下代码:
ruby 代码
  1. gem 'hpricot', '>= 0.6'  

如果不是rubygems的外部依赖软件怎么办?还是可以借助gems提供的版本管理模块写:
ruby 代码
 
  1. #==========================================  
  2. # Ubuntu:  
  3. # sudo apt-get install sqlite3  
  4. # sudo apt-get install libsqlite3-dev  
  5. # sudo gem install sqlite3-ruby  
  6. #==========================================  
  7. cur_sqlite3 = `sqlite3 -version`  
  8. req_sqlite3 = Gem::Version.create('3.3.5')  
  9. unless Gem::Version.create(cur_sqlite3) >= req_sqlite3  
  10.   raise RuntimeError, "sqlite3 3.3.5 or late required."  
  11. end  

这样在启动时,如果没有满足依赖条件,webrick或者mongrel会马上raise一个异常到comsole上,并附带了版本要求信息.

你可能感兴趣的:(ubuntu,项目管理,Ruby,Rails,rubygems)