`
liano
  • 浏览: 25370 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ruby, ruby gems, gemsonrails, rails plugin 之间的关系

阅读更多
*ruby 之间的引用全部是源代码的引用,为了规范类库的管理,gems出现了。
gems是ruby源代码管理工具,代码按照一定的目录结构被组织成一个lib。
比如:rake, rails, rcov都有gem版本。
安装一个rake gem只需要执行 gem install rake. rake 的源代码被下载下来以后被放到了一个特定的位置。也可以下载rake.gem 通过执行 gem install rake.gem来手工安装。
那么如何使用呢?
require 'rubygems'
require 'rake'
这样就可以了。

前面的文章我说过ruby里的LOAD_PATH, rubygems 的位置在它安装的时候已经被加到了LOAD_PATH里了,在require ‘rubygems’的时候,rake gem下面的lib路径也被加入到了LOADPATH里。

*rake gem 安装以后可以在命令行使用吗?
不行!
gem包含的只是ruby的原代码库,要想使用必须用require引用。
如果要想在命令行运行rake,必须安装rake的命令行工具,就像apt-get install rake.

*rails可以使用gems
2种方式:
1.直接引用系统里的gem库
2.把gem绑定到rails里,通过gemsonrails这个命令行工具
其实就是直接把gem的文件夹copy到rails/vendor/gems下

如何freeze rails 到 rails peoject
rake rails:freeze:gems (from rails app root)
rake rails:unfreeze

rails app中的Rake文件引用了系统的rake,而后系统的rake引用了系统中的每个gem的rake文件。

*rails的plugin可以通过script/plugin命令来安装
plugin可以调用gem的程序,在于plugin程序如何写。

*rake 和plugin之间的关系
rails 中的Rake file引用config/boot,几乎引用了所有的rails运行时环境的东西

*rails中的gems只有在rails运行的时候,才由enviroment.rb来引入。
rake不会自动引入gems的代码和路径。如果要使用的话,需要require ‘vendor/gems/lib/xxx’。
gem 可以通过rake被freeze到rails app中去
因为rake自动引用plugin,所以先装一个gems的plugin
1.script/plugin install http://svn.ardes.com/rails_plugins/gems
而后再
2.rake gems:freeze GEM=gem_name

*rcov的rails plugin其实不做具体的工作,它是调用系统的rcov命令行工具。
所以必须安装rcov的命令行工具,apt-get install rcov

为什么rails rcov plugin没有包含rcov的全部功能呢?
因为rcov和系统相关,需要在安装的时候编译,这和OCI8是一样的。


分享到:
评论
3 楼 liano 2009-02-23  
同意楼上,反对楼主!:)
2 楼 viva_yang 2009-02-05  
同意楼上,反对教条
1 楼 rainux 2009-01-25  
liano 写道

*rake gem 安装以后可以在命令行使用吗?
不行!
gem包含的只是ruby的原代码库,要想使用必须用require引用。
如果要想在命令行运行rake,必须安装rake的命令行工具,就像apt-get install rake.


亲自试试再用这么肯定的语气说话。

相关推荐

Global site tag (gtag.js) - Google Analytics