Linux下RubyGems简明指南

说是简明指南,可能也算不上,因为我只是要解决一个问题:怎样指定gems的安装目录,而不是装在默认的地方?

以下是在解决这个问题时做的笔记。

浏览远程机器上的gems
gem q -r
查找远程机器上名字中含有activerecord的gems
gem q -r -n activerecord
浏览本地安装的gems
gem q -l
浏览gem的详细说明
gem spec activerecord
从远程安装gem
gem install -r activerecord
安装特定版本
gem install --remote activerecord --version "2.1.0"
(这里有一个问题,gem怎么知道远程服务器在什么地方,可以想象的是,gem有一个默认的服务器,如果要指定自己的服务器呢?)
也可以从http://rubyforge.org/上下载.gem文件,然后在本地安装
gem install activerecord -l
卸载gem
gem uninstall activerecord

前面提出的问题的答案:
要设置一个GEM_HOME变量
linux下可以写在用户home目录下的.gemrc中
例如:
gemhome: /home/albertsong/ruby/gems
gempath:
  - /usr/lib/ruby/gems/1.8:/home/albertsong/ruby/gems
gempath指定了查找gems的路径,上面的gempath指定了系统路径和我们自定义的路径。.gemrc文件的位置/home/albertsong/.gemrc
具体在这里http://docs.rubygems.org/read/chapter/3
这样,我们用gem命令安装的gem将放在
/home/albertsong/ruby/gems下,可以同时使用
/usr/lib/ruby/gems/1.8和/home/albertsong/ruby/gems下的gem

使用安装的gem
在ruby代码中
require 'rubygems'
require 'some_gem_library'
或者
ruby -rubygems my_program_that_uses_gems
或者在.profile中
export RUBYOPT=rubygems
用后面两种的话,在代码中只要require 'active_record'这样就可以了。

另一个问题:因为RubyGems可以管理不同版本的gem,如何指定使用某一个版本的gem
这样:require_gem 'activerecord', '= 2.1.0'
指定使用activerecord的2.1.0版。
如果在每个.rb文件中象上面这样指定,那文件多了要改变就麻烦了。
为了方便管理版本依赖,可以使用一个配置文件environment.rb。
内容如下:
# ...
require 'rubygems'
require_gem 'activerecord', '= 2.1.0'
# ...
然后在自己的文件中可以require "environment"

最后一个问题答案:
通过--source 可以指定gems的服务器,默认的服务器保存在
sources这个gem中,所以系统更新这个gem就更新了默认的服务器列表。
不指定source相当于
gem i activerecord -r --source http://gems.rubyforge.org
这个看一下ruby\lib\ruby\gems\1.8\gems\sources-0.0.1\lib\sources.rb就很清楚了。
从某个特定的服务器中安装gem
gem i mygem --source http://gems.albertsong.com/


最最完整的在这里:)
http://docs.rubygems.org/
另外要善用下面两个命令
查看所有可用的命令
gem help commands
查看spec命令的详细用法
gem help spec

其它:
版本号的含义:
http://docs.rubygems.org/read/chapter/7

学会了怎样拣宝贝,ruby之旅会更愉快吧:D

另外:
我的习惯是看手册,而不是直接在Google中输入“怎样指定gems安装目录”,即使这样可以找到。
这样做的好处是,可以形成系统的知识体系,就算是快速浏览手册,看过的地方也会有一定的印象,以后碰到问题就能确信在手册中有,而不需要东找西找浪费时间。
除非:
1.手册已经看得很熟了,知道不能解决问题。
2.不打算掌握这门知识,临时用一下。
3.事情很急,火烧屁股,需要尽快找到一个解决方法。
标签: Ruby
评论: 0 | 引用: 0 | 阅读: 184
发表评论
昵 称: (必须)
密 码: (未注册用户可不填)
网 址: 邮 箱:
验证码: 验证码图片 选 项:
头 像:
内 容: