Ruby Gems

Ruby Gems  

2010-07-26 16:29:54|  分类: ruby&rails|字号 订阅

1. 什么是RubyGems
RubyGems是一个库和程序的标准化打包以及安装框架,使得定位、安装、升级和卸载Ruby包变得容易。

1.1 RubyGems出现之前
1)、搜索互联网找到需要安装的Ruby程序
2)、搜索Ruby程序依赖的程序
3)、下载所有程序包
4)、按顺序安装

1.2 安装RubyGems
安装的RubyGems有三种方法
方法1) 使用ruby一步安装程序自带的RubyGems
在http://www.ruby-lang.org/zh_CN/中下载,针对windows平台的一步安装文件ruby186-26.exe,安装完毕系统就自带RubyGems,不过缺点就是版本比较低为0.9.4 。
方法2) 网上下载RubyGems的最新版本到本地,然后手动安装
在http://rubyforge.org/projects/rubygems/中下载RubyGems的最新版本(目前最新版本为1.3.1 ),在本地解压并执行ruby install.rb命令

方法3) 使用ruby一步安装程序自带的低版本RubyGems的升级功能
在命令行中输入gem install rubygems-update自动升级为最新版本(强烈推荐这种方法升级RubyGems

1.3 从哪些途径能够了解到RubyGems
最简单的方法就是在命令行打gem help命令

第2种方法就是在http://docs.rubygems.org/中找到你需要的帮助文档(学习初期推荐使用第1种方法来了解RubyGems,后期强烈推荐第2种方法来学习,这样可以学到更多的有用的知识

1.4 怎样利用好RubyGems的强大功能
现在网上用Ruby开发的开源项目非常多,大家可以到http://rubyforge.org这个网站中去看一下。基本上这里找到的项目都能使用RubyGems来(以上见解纯属个人看法,如有与事实不同概不负责)

 

2. Ruby Gems命令行参考手册

我学习ruby有一段时间,有一些新的想与大家分享,要学会ruby首先要学会怎么玩ruby。然而怎么玩ruby的第一步就是如何安装配置ruby的常用库。rubygems是ruby提供的一个非常有效配置ruby插件的工具。一开始接触rubygems的朋友非常头痛如何能学会rubygems他到底怎么操作,下面我来介绍一下如何来作rubygems的日常操作。

1)、查询
查询本地和远程安装的gem信息,这是你进入rubygems世界的第一步。了解本地的机器上到底装了哪些gems,远程的资源库中有哪些非常有趣的gems,用一条查询命令就可以全部搞定。不知道出于何种目的rubygems一共有三种查询的命令,晕。分别是gem query 、gem search 、gem list。通过分别使用我发现这三个命令基本上都一样。为了不浪费时间我建议大家日常使用就直接用gem query,他的好处就是可以支持正则表达式为查询条件过滤内容。由于网上的gem资源有很多如何来快速查询自己需要的内容就使用gem query吧。
1.1查询本地安装的gem,在命令行中打入gem query 或者是gem query -l。

1.2查询远程的可以提供下载使用的gem,在命令行中打入gem query -r 告诉rubygems查询远程的gem资源。

1.3使用关键字查询,这也是query命令的最厉害的地方支持正则表达式为条件的搜索。下图就是我们以record为关键字进行搜索

2)、安装gem
查询完了就可以安装自己所需要的gem了,命令很简单就是install,只要看到sucessfully的提示就可以了。

3)、卸载
安装了一段时间后一些gem不需要了,我们就可以用命令把他卸载了,只要看到sucessfully的提示就说明卸载成功了。

rubygems常用的命令就这3个很简单吧,如何深入使用这三个命令。接下来我准备用3次来分别详细介绍。

 

 

3. gem query

–查询本地或者远程的gem资源,查询结果以列表方式显示

gem query的功能
1、 把查询结果以列表方式显示出来
2、可以设置是从本地还是从远程进行查询
3、可以设置查询的关键字

Usage: gem query [options]    Options:     -n, --name-matches REGEXP        Name of gem(s) to query on maches the provided REGEXP     -d, --[no-]details               Display detailed information of gem(s)     -l, --local                      Restrict operations to the LOCAL domain (default)     -r, --remote                     Restrict operations to the REMOTE domain     -b, --both                       Allow LOCAL and REMOTE operations
1)、使用-l或者--local为选项列出本地gem,其实gem query不加任何选项默认就是查询本地gem。 
2)、使用-d或者--details列出gem的Description信息,可以对比一下上面的图片加上-d之后可以显示gem的名称、版本、作者、Rubyforge的网址、Homepage、安装gem的地址等一些详细的介绍,让你对这个gem有更多的了解 
3)、使用-r或者--remote为选项列出远程gem信息。 远程的gem是很多开源组织或者个人以非赢利为目的把自己的项目发到www.rubyforge.org中,供大家下载使用。 所以经常使用-r为条件看看远程有哪些新增的或者非常有趣的项目,如果觉得不错就可以下载到本地安装。 
4)、使用-b或者--both为选项列出本地和远程的gem信息(这个选项不会经常使用到)
5)、使用-n或者--name-matches为选项作gem名字搜索支持正则表达式为条件的搜索。下图就是搜索名称中带有record的gem 
下面就是query最强大的地方支持正则表达式的特殊符合  
 

4. RubyGems 版本策略

理解RubyGems版本管理策略

每个gem项目基本上都是一些以非赢利为目的的个人和组织上传的,处于松散管理状态。如何能把gem项目更好的管理起来,RubyGems有一套自己的管理策略,从而规范大家的版本发布。

其实RubyGem的版本管理策略很简单的,我们经常可以使用gem query命令可以看到在gem包后面会跟一个或者多个由数字组成的字符串(3, 3.1, 3.14, 3.141, 3.1415),它到底代表了什么含义呢。至于在确定了需要安装gem的名称后如何选择我们需要的版本来安装在后面几天我会详细介绍。现在我们只要能做到理解这些数字的含义就可以了。

每个gem项目都有自己的生命周期,其实能利用RubyGems版本管理策略看懂各个gem项目版本之间的区别也是一件非常有意思的事情,让我们接下去看。

RubyGems版本依赖采用操作符 主版本.次版本.补丁 的形式发布的

上图说明了名字叫tinkerbell的gem项目现在主版本为0,次版本为0,补丁为4,what_does_this_error_mean-merb这个项目的主版本为0,此版本为0,补丁为3。从这些信息都表明这两个项目都是比较新的项目tinkerbell项目发到现在只有3个比较小的改动。接下来让我们看看RubyGems版本管理的

Version 0.0.1: gem项目最初的一个版本。
Version 0.0.2: 经过最初版本的发布后,修改了一些Bug对某些细节作了修改,所以只做补丁版本的改变。
Version 0.1.0: 在前一个版本的基础上改变了一些类方法,这些改动就不是修复补丁那么简单的了,所以有必要改变次版本号。
Version 1.0.0: 在一定范围内做了方法或者类的改变,应该改动是比较大的,所以需要改变主版本号。

简单吧,其实RubyGems的版本管理策略是非常简单而且行之有效的,已经成为了gem项目发布的一个规范了。

 

5.代理服务下如何使用gems

如果使用了代理服务,相关命令需要使用 -p 选项(设置了环境变量则不用-p),同时设置代理.
windows:
 格式:set HTTP_PROXY=http://username:[email protected]:port
  set HTTP_PROXY=http://yisl:[email protected]:80
  gem install watir -p

linux:
 格式:export HTTP_PROXY=http://username:[email protected]:port

  export HTTP_PROXY=http://yisl:[email protected]:80
  gem update –system

 

6. ruby+gem常用命令 

ruby -v #查看ruby 版本
ruby -e 'require"watir"; puts Watir::IE::VERSION' #查看watir版本

gem -v #gem版本
gem update #更新所有包
gem update --system #更新RubyGems软件

gem install rake #安装rake,从本地或远程服务器
gem install rake --remote #安装rake,从远程服务器

gem install watir -v(或者--version) 1.6.2#指定安装版本的 (多谢 wpyily 提供)
gem uninstall rake #卸载rake包
gem list d #列出本地以d打头的包
gem query -n '[0-9]' --local #查找本地含有数字的包
gem search log --both #从本地和远程服务器上查找含有log字符串的包
gem search log --remoter #只从远程服务器上查找含有log字符串的包
gem search -r log #只从远程服务器上查找含有log字符串的包

gem help #提醒式的帮助
gem help install #列出install命令 帮助
gem help examples #列出gem命令使用一些例子

gem build rake.gemspec #把rake.gemspec编译成rake.gem
gem check -v pkg/rake-0.4.0.gem #检测rake是否有效
gem cleanup #清除所有包旧版本,保留最新版本
gem contents rake #显示rake包中所包含的文件
gem dependency rails -v 0.10.1 #列出与rails相互依赖的包
gem environment #查看gem的环境

使用方式
大概的準則是這樣子(我這邊一律用縮寫)

i 是安裝

  • q 是查詢
  • -r 是操作遠端伺服器上的套件
  • -l 就是本地端的套件
  • -n 就是查詢名字
  • -y 就是將所有相關的套件全部裝好

1). 查詢本機端安裝了那些套件
    gem q
2). 查詢遠端有那些套件可以安裝
    gem q -r
3).查詢遠端有沒有名叫 ABC 的套件可以安裝
    gem q -r -n ABC
4). 安裝遠端名叫 ABC 的套件
    gem i -r ABC
5). 安裝遠端名叫 ABC 的套件,並且把所有相關的套件都裝好
    gem i -r ABC --include-dependencies
6).移除已經安裝的 ABC 套件(你說為何不用縮寫,因為Uninstall 要謹慎點 :p)
    gem uninstall ABC
7). 升級ABC 套件(也就是再安裝一次)
    gem i ABC 
8). 列出本機端已經安裝的套件
    gem list -l 或是 gem l –l 
9). 求救
    gem help 或是 gem -h

 

7. 搭建属于自己的RubyGems服务器

RubyGems是一个用于Ruby的包管理工具,虽然并未包含在Ruby的发行版中,但是可以认为是事实上Ruby世界中标准的发布Ruby程序和库的工具,可以很方便的管理gem之间的依赖性。

如果你是在进行Open Source的Ruby程序开发,可以直接通过Rubyforge来发布gem。不过如果是自己的私有项目,可能就需要自己搭建一个Web server来进行gem的发布了。如果系统中已经安装了RubyGems的话,通过gem server (gem help server看看用法)就可以启动一个简单的gem发布的server。不过很可能的,你已经有一个Web Server在系统环境中了(如Apache Web Server),这个时候就通过以下的几个步骤可以完成把这个Web Server改造成为一个gem distribution server:

1) 建立一个发布目录,并设置Apache(或者其他的Web Server)使得这一目录能够通过Web访问。并在这一发布目录下建立一个名为gems的子目录。

比如我们在htdocs目录下建立一个目录dist,并建立一个gems子目录。

2) 拷贝打包好的gem到dist/gems目录中。

如拷贝 allmighty-1.0.gem 到htdocs/dist/gems目录中。

3) 在命令行界面中,进入dist目录,运行“gem generate_index .”(或gem generate_index -d .)(请注意最后的一个点,表示当前目录)。这一命令会对gems子目录中的所有gem建立一个索引文件yaml,并存放在dist目录下,以便可以通过gem install命令安装时查找。

4) You’re done~

在这之后,你就可以通过”gem install allmighty –source http://127.0.0.1:8808/dist/”命令来安装你新发布的gem了。
(先启动该httpServer:如webrick 可在命令行下打 gem server启动在8808 port 上面,將你這台機器裡面所有安裝的 gem 列出來,並且你可以快速的看到你所下載 gem 的 rdoc,相當的方便 )

5) 如果以后还有新的gem需要发布或者有新的版本的gem需要发布,请从步骤2)开始继续即可。

关于RubyGems,有一本很好的书,介绍了其使用、开发和发布等,有兴趣的话可以看看。

 

8. gem 本地安装
1).在gems目录下面找到所有需要更新的模块(如allmighty
2).到rubyforge上下载该模块的安装包, 以.gem结束(allmighty-1.0.gem 
3).进入本地安装包目录, 运行 gem install allmighty-1.0.gem  --local
4).你会发现 allmighty gems上已经更新了
注意要用rails console来做, 比较安全.

Ruby Gems  

2010-07-26 16:29:54|  分类: ruby&rails|字号 订阅

1. 什么是RubyGems
RubyGems是一个库和程序的标准化打包以及安装框架,使得定位、安装、升级和卸载Ruby包变得容易。

1.1 RubyGems出现之前
1)、搜索互联网找到需要安装的Ruby程序
2)、搜索Ruby程序依赖的程序
3)、下载所有程序包
4)、按顺序安装

1.2 安装RubyGems
安装的RubyGems有三种方法
方法1) 使用ruby一步安装程序自带的RubyGems
在http://www.ruby-lang.org/zh_CN/中下载,针对windows平台的一步安装文件ruby186-26.exe,安装完毕系统就自带RubyGems,不过缺点就是版本比较低为0.9.4 。
方法2) 网上下载RubyGems的最新版本到本地,然后手动安装
在http://rubyforge.org/projects/rubygems/中下载RubyGems的最新版本(目前最新版本为1.3.1 ),在本地解压并执行ruby install.rb命令

方法3) 使用ruby一步安装程序自带的低版本RubyGems的升级功能
在命令行中输入gem install rubygems-update自动升级为最新版本(强烈推荐这种方法升级RubyGems

1.3 从哪些途径能够了解到RubyGems
最简单的方法就是在命令行打gem help命令

第2种方法就是在http://docs.rubygems.org/中找到你需要的帮助文档(学习初期推荐使用第1种方法来了解RubyGems,后期强烈推荐第2种方法来学习,这样可以学到更多的有用的知识

1.4 怎样利用好RubyGems的强大功能
现在网上用Ruby开发的开源项目非常多,大家可以到http://rubyforge.org这个网站中去看一下。基本上这里找到的项目都能使用RubyGems来(以上见解纯属个人看法,如有与事实不同概不负责)

 

2. Ruby Gems命令行参考手册

我学习ruby有一段时间,有一些新的想与大家分享,要学会ruby首先要学会怎么玩ruby。然而怎么玩ruby的第一步就是如何安装配置ruby的常用库。rubygems是ruby提供的一个非常有效配置ruby插件的工具。一开始接触rubygems的朋友非常头痛如何能学会rubygems他到底怎么操作,下面我来介绍一下如何来作rubygems的日常操作。

1)、查询
查询本地和远程安装的gem信息,这是你进入rubygems世界的第一步。了解本地的机器上到底装了哪些gems,远程的资源库中有哪些非常有趣的gems,用一条查询命令就可以全部搞定。不知道出于何种目的rubygems一共有三种查询的命令,晕。分别是gem query 、gem search 、gem list。通过分别使用我发现这三个命令基本上都一样。为了不浪费时间我建议大家日常使用就直接用gem query,他的好处就是可以支持正则表达式为查询条件过滤内容。由于网上的gem资源有很多如何来快速查询自己需要的内容就使用gem query吧。
1.1查询本地安装的gem,在命令行中打入gem query 或者是gem query -l。

1.2查询远程的可以提供下载使用的gem,在命令行中打入gem query -r 告诉rubygems查询远程的gem资源。

1.3使用关键字查询,这也是query命令的最厉害的地方支持正则表达式为条件的搜索。下图就是我们以record为关键字进行搜索

2)、安装gem
查询完了就可以安装自己所需要的gem了,命令很简单就是install,只要看到sucessfully的提示就可以了。

3)、卸载
安装了一段时间后一些gem不需要了,我们就可以用命令把他卸载了,只要看到sucessfully的提示就说明卸载成功了。

rubygems常用的命令就这3个很简单吧,如何深入使用这三个命令。接下来我准备用3次来分别详细介绍。

 

 

3. gem query

–查询本地或者远程的gem资源,查询结果以列表方式显示

gem query的功能
1、 把查询结果以列表方式显示出来
2、可以设置是从本地还是从远程进行查询
3、可以设置查询的关键字

Usage: gem query [options]    Options:     -n, --name-matches REGEXP        Name of gem(s) to query on maches the provided REGEXP     -d, --[no-]details               Display detailed information of gem(s)     -l, --local                      Restrict operations to the LOCAL domain (default)     -r, --remote                     Restrict operations to the REMOTE domain     -b, --both                       Allow LOCAL and REMOTE operations
1)、使用-l或者--local为选项列出本地gem,其实gem query不加任何选项默认就是查询本地gem。 
2)、使用-d或者--details列出gem的Description信息,可以对比一下上面的图片加上-d之后可以显示gem的名称、版本、作者、Rubyforge的网址、Homepage、安装gem的地址等一些详细的介绍,让你对这个gem有更多的了解 
3)、使用-r或者--remote为选项列出远程gem信息。 远程的gem是很多开源组织或者个人以非赢利为目的把自己的项目发到www.rubyforge.org中,供大家下载使用。 所以经常使用-r为条件看看远程有哪些新增的或者非常有趣的项目,如果觉得不错就可以下载到本地安装。 
4)、使用-b或者--both为选项列出本地和远程的gem信息(这个选项不会经常使用到)
5)、使用-n或者--name-matches为选项作gem名字搜索支持正则表达式为条件的搜索。下图就是搜索名称中带有record的gem 
下面就是query最强大的地方支持正则表达式的特殊符合  
 

4. RubyGems 版本策略

理解RubyGems版本管理策略

每个gem项目基本上都是一些以非赢利为目的的个人和组织上传的,处于松散管理状态。如何能把gem项目更好的管理起来,RubyGems有一套自己的管理策略,从而规范大家的版本发布。

其实RubyGem的版本管理策略很简单的,我们经常可以使用gem query命令可以看到在gem包后面会跟一个或者多个由数字组成的字符串(3, 3.1, 3.14, 3.141, 3.1415),它到底代表了什么含义呢。至于在确定了需要安装gem的名称后如何选择我们需要的版本来安装在后面几天我会详细介绍。现在我们只要能做到理解这些数字的含义就可以了。

每个gem项目都有自己的生命周期,其实能利用RubyGems版本管理策略看懂各个gem项目版本之间的区别也是一件非常有意思的事情,让我们接下去看。

RubyGems版本依赖采用操作符 主版本.次版本.补丁 的形式发布的

上图说明了名字叫tinkerbell的gem项目现在主版本为0,次版本为0,补丁为4,what_does_this_error_mean-merb这个项目的主版本为0,此版本为0,补丁为3。从这些信息都表明这两个项目都是比较新的项目tinkerbell项目发到现在只有3个比较小的改动。接下来让我们看看RubyGems版本管理的

Version 0.0.1: gem项目最初的一个版本。
Version 0.0.2: 经过最初版本的发布后,修改了一些Bug对某些细节作了修改,所以只做补丁版本的改变。
Version 0.1.0: 在前一个版本的基础上改变了一些类方法,这些改动就不是修复补丁那么简单的了,所以有必要改变次版本号。
Version 1.0.0: 在一定范围内做了方法或者类的改变,应该改动是比较大的,所以需要改变主版本号。

简单吧,其实RubyGems的版本管理策略是非常简单而且行之有效的,已经成为了gem项目发布的一个规范了。

 

5.代理服务下如何使用gems

如果使用了代理服务,相关命令需要使用 -p 选项(设置了环境变量则不用-p),同时设置代理.
windows:
 格式:set HTTP_PROXY=http://username:[email protected]:port
  set HTTP_PROXY=http://yisl:[email protected]:80
  gem install watir -p

linux:
 格式:export HTTP_PROXY=http://username:[email protected]:port

  export HTTP_PROXY=http://yisl:[email protected]:80
  gem update –system

 

6. ruby+gem常用命令 

ruby -v #查看ruby 版本
ruby -e 'require"watir"; puts Watir::IE::VERSION' #查看watir版本

gem -v #gem版本
gem update #更新所有包
gem update --system #更新RubyGems软件

gem install rake #安装rake,从本地或远程服务器
gem install rake --remote #安装rake,从远程服务器

gem install watir -v(或者--version) 1.6.2#指定安装版本的 (多谢 wpyily 提供)
gem uninstall rake #卸载rake包
gem list d #列出本地以d打头的包
gem query -n '[0-9]' --local #查找本地含有数字的包
gem search log --both #从本地和远程服务器上查找含有log字符串的包
gem search log --remoter #只从远程服务器上查找含有log字符串的包
gem search -r log #只从远程服务器上查找含有log字符串的包

gem help #提醒式的帮助
gem help install #列出install命令 帮助
gem help examples #列出gem命令使用一些例子

gem build rake.gemspec #把rake.gemspec编译成rake.gem
gem check -v pkg/rake-0.4.0.gem #检测rake是否有效
gem cleanup #清除所有包旧版本,保留最新版本
gem contents rake #显示rake包中所包含的文件
gem dependency rails -v 0.10.1 #列出与rails相互依赖的包
gem environment #查看gem的环境

使用方式
大概的準則是這樣子(我這邊一律用縮寫)

i 是安裝

  • q 是查詢
  • -r 是操作遠端伺服器上的套件
  • -l 就是本地端的套件
  • -n 就是查詢名字
  • -y 就是將所有相關的套件全部裝好

1). 查詢本機端安裝了那些套件
    gem q
2). 查詢遠端有那些套件可以安裝
    gem q -r
3).查詢遠端有沒有名叫 ABC 的套件可以安裝
    gem q -r -n ABC
4). 安裝遠端名叫 ABC 的套件
    gem i -r ABC
5). 安裝遠端名叫 ABC 的套件,並且把所有相關的套件都裝好
    gem i -r ABC --include-dependencies
6).移除已經安裝的 ABC 套件(你說為何不用縮寫,因為Uninstall 要謹慎點 :p)
    gem uninstall ABC
7). 升級ABC 套件(也就是再安裝一次)
    gem i ABC 
8). 列出本機端已經安裝的套件
    gem list -l 或是 gem l –l 
9). 求救
    gem help 或是 gem -h

 

7. 搭建属于自己的RubyGems服务器

RubyGems是一个用于Ruby的包管理工具,虽然并未包含在Ruby的发行版中,但是可以认为是事实上Ruby世界中标准的发布Ruby程序和库的工具,可以很方便的管理gem之间的依赖性。

如果你是在进行Open Source的Ruby程序开发,可以直接通过Rubyforge来发布gem。不过如果是自己的私有项目,可能就需要自己搭建一个Web server来进行gem的发布了。如果系统中已经安装了RubyGems的话,通过gem server (gem help server看看用法)就可以启动一个简单的gem发布的server。不过很可能的,你已经有一个Web Server在系统环境中了(如Apache Web Server),这个时候就通过以下的几个步骤可以完成把这个Web Server改造成为一个gem distribution server:

1) 建立一个发布目录,并设置Apache(或者其他的Web Server)使得这一目录能够通过Web访问。并在这一发布目录下建立一个名为gems的子目录。

比如我们在htdocs目录下建立一个目录dist,并建立一个gems子目录。

2) 拷贝打包好的gem到dist/gems目录中。

如拷贝 allmighty-1.0.gem 到htdocs/dist/gems目录中。

3) 在命令行界面中,进入dist目录,运行“gem generate_index .”(或gem generate_index -d .)(请注意最后的一个点,表示当前目录)。这一命令会对gems子目录中的所有gem建立一个索引文件yaml,并存放在dist目录下,以便可以通过gem install命令安装时查找。

4) You’re done~

在这之后,你就可以通过”gem install allmighty –source http://127.0.0.1:8808/dist/”命令来安装你新发布的gem了。
(先启动该httpServer:如webrick 可在命令行下打 gem server启动在8808 port 上面,將你這台機器裡面所有安裝的 gem 列出來,並且你可以快速的看到你所下載 gem 的 rdoc,相當的方便 )

5) 如果以后还有新的gem需要发布或者有新的版本的gem需要发布,请从步骤2)开始继续即可。

关于RubyGems,有一本很好的书,介绍了其使用、开发和发布等,有兴趣的话可以看看。

 

8. gem 本地安装
1).在gems目录下面找到所有需要更新的模块(如allmighty
2).到rubyforge上下载该模块的安装包, 以.gem结束(allmighty-1.0.gem 
3).进入本地安装包目录, 运行 gem install allmighty-1.0.gem  --local
4).你会发现 allmighty gems上已经更新了
注意要用rails console来做, 比较安全.

你可能感兴趣的:(ruby自动化)