论坛首页 编程语言技术论坛

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

浏览 4043 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (13)
作者 正文
   发表时间:2009-01-24   最后修改:2009-01-24
*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是一样的。


   发表时间:2009-01-25  
liano 写道

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


亲自试试再用这么肯定的语气说话。
0 请登录后投票
   发表时间:2009-02-05  
同意楼上,反对教条
0 请登录后投票
   发表时间:2009-02-23  
同意楼上,反对楼主!:)
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics