2010-07-26 16:29:54| 分類: ruby&rails |字號 訂閱
1. 什么是RubyGems
RubyGems是一個庫和程序的標(biāo)準(zhǔn)化打包以及安裝框架,使得定位、安裝、升級和卸載Ruby包變得容易。
1.1 RubyGems出現(xiàn)之前
1)、搜索互聯(lián)網(wǎng)找到需要安裝的Ruby程序
2)、搜索Ruby程序依賴的程序
3)、下載所有程序包
4)、按順序安裝
1.2 安裝RubyGems
安裝的RubyGems有三種方法
方法1) 使用ruby一步安裝程序自帶的RubyGems
在http://www.ruby-lang.org/zh_CN/中下載,針對windows平臺的一步安裝文件ruby186-26.exe,安裝完畢系統(tǒng)就自帶RubyGems,不過缺點(diǎn)就是版本比較低為0.9.4 。
方法2) 網(wǎng)上下載RubyGems的最新版本到本地,然后手動安裝
在http://rubyforge.org/projects/rubygems/中下載RubyGems的最新版本(目前最新版本為1.3.1 ),在本地解壓并執(zhí)行ruby install.rb命令
方法3) 使用ruby一步安裝程序自帶的低版本RubyGems的升級功能
在命令行中輸入gem install rubygems-update自動升級為最新版本(強(qiáng)烈推薦這種方法升級RubyGems)
1.3 從哪些途徑能夠了解到RubyGems
最簡單的方法就是在命令行打gem help命令
第2種方法就是在http://docs.rubygems.org/中找到你需要的幫助文檔(學(xué)習(xí)初期推薦使用第1種方法來了解RubyGems,后期強(qiáng)烈推薦第2種方法來學(xué)習(xí),這樣可以學(xué)到更多的有用的知識)
1.4 怎樣利用好RubyGems的強(qiáng)大功能
現(xiàn)在網(wǎng)上用Ruby開發(fā)的開源項(xiàng)目非常多,大家可以到http://rubyforge.org/這個網(wǎng)站中去看一下?;旧线@里找到的項(xiàng)目都能使用RubyGems來(以上見解純屬個人看法,如有與事實(shí)不同概不負(fù)責(zé))
2. Ruby Gems命令行參考手冊
我學(xué)習(xí)ruby有一段時間,有一些新的想與大家分享,要學(xué)會ruby首先要學(xué)會怎么玩ruby。然而怎么玩ruby的第一步就是如何安裝配置ruby的常用庫。rubygems是ruby提供的一個非常有效配置ruby插件的工具。一開始接觸rubygems的朋友非常頭痛如何能學(xué)會rubygems他到底怎么操作,下面我來介紹一下如何來作rubygems的日常操作。
1)、查詢
查詢本地和遠(yuǎn)程安裝的gem信息,這是你進(jìn)入rubygems世界的第一步。了解本地的機(jī)器上到底裝了哪些gems,遠(yuǎn)程的資源庫中有哪些非常有趣的gems,用一條查詢命令就可以全部搞定。不知道出于何種目的rubygems一共有三種查詢的命令,暈。分別是gem query 、gem search 、gem list。通過分別使用我發(fā)現(xiàn)這三個命令基本上都一樣。為了不浪費(fèi)時間我建議大家日常使用就直接用gem query,他的好處就是可以支持正則表達(dá)式為查詢條件過濾內(nèi)容。由于網(wǎng)上的gem資源有很多如何來快速查詢自己需要的內(nèi)容就使用gem query吧。
1.1查詢本地安裝的gem,在命令行中打入gem query 或者是gem query -l。
1.2查詢遠(yuǎn)程的可以提供下載使用的gem,在命令行中打入gem query -r 告訴rubygems查詢遠(yuǎn)程的gem資源。
1.3使用關(guān)鍵字查詢,這也是query命令的最厲害的地方支持正則表達(dá)式為條件的搜索。下圖就是我們以record為關(guān)鍵字進(jìn)行搜索
2)、安裝gem
查詢完了就可以安裝自己所需要的gem了,命令很簡單就是install,只要看到sucessfully的提示就可以了。
3)、卸載
安裝了一段時間后一些gem不需要了,我們就可以用命令把他卸載了,只要看到sucessfully的提示就說明卸載成功了。
rubygems常用的命令就這3個很簡單吧,如何深入使用這三個命令。接下來我準(zhǔn)備用3次來分別詳細(xì)介紹。
gem query的功能
1、 把查詢結(jié)果以列表方式顯示出來
2、可以設(shè)置是從本地還是從遠(yuǎn)程進(jìn)行查詢
3、可以設(shè)置查詢的關(guān)鍵字
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為選項(xiàng)列出本地gem,其實(shí)gem query不加任何選項(xiàng)默認(rèn)就是查詢本地gem。
2)、使用-d或者--details列出gem的Description信息,可以對比一下上面的圖片加上-d之后可以顯示gem的名稱、版本、作者、Rubyforge的網(wǎng)址、Homepage、安裝gem的地址等一些詳細(xì)的介紹,讓你對這個gem有更多的了解
3)、使用-r或者--remote為選項(xiàng)列出遠(yuǎn)程gem信息。 遠(yuǎn)程的gem是很多開源組織或者個人以非贏利為目的把自己的項(xiàng)目發(fā)到http://www.rubyforge.org/中,供大家下載使用。 所以經(jīng)常使用-r為條件看看遠(yuǎn)程有哪些新增的或者非常有趣的項(xiàng)目,如果覺得不錯就可以下載到本地安裝。
4)、使用-b或者--both為選項(xiàng)列出本地和遠(yuǎn)程的gem信息(這個選項(xiàng)不會經(jīng)常使用到)
5)、使用-n或者--name-matches為選項(xiàng)作gem名字搜索支持正則表達(dá)式為條件的搜索。下圖就是搜索名稱中帶有record的gem
下面就是query最強(qiáng)大的地方支持正則表達(dá)式的特殊符合
每個gem項(xiàng)目基本上都是一些以非贏利為目的的個人和組織上傳的,處于松散管理狀態(tài)。如何能把gem項(xiàng)目更好的管理起來,RubyGems有一套自己的管理策略,從而規(guī)范大家的版本發(fā)布。
其實(shí)RubyGem的版本管理策略很簡單的,我們經(jīng)常可以使用gem query命令可以看到在gem包后面會跟一個或者多個由數(shù)字組成的字符串(3, 3.1, 3.14, 3.141, 3.1415),它到底代表了什么含義呢。至于在確定了需要安裝gem的名稱后如何選擇我們需要的版本來安裝在后面幾天我會詳細(xì)介紹?,F(xiàn)在我們只要能做到理解這些數(shù)字的含義就可以了。
每個gem項(xiàng)目都有自己的生命周期,其實(shí)能利用RubyGems版本管理策略看懂各個gem項(xiàng)目版本之間的區(qū)別也是一件非常有意思的事情,讓我們接下去看。
RubyGems版本依賴采用操作符 主版本.次版本.補(bǔ)丁 的形式發(fā)布的
Version 0.0.1: gem項(xiàng)目最初的一個版本。
Version 0.0.2: 經(jīng)過最初版本的發(fā)布后,修改了一些Bug對某些細(xì)節(jié)作了修改,所以只做補(bǔ)丁版本的改變。
Version 0.1.0: 在前一個版本的基礎(chǔ)上改變了一些類方法,這些改動就不是修復(fù)補(bǔ)丁那么簡單的了,所以有必要改變次版本號。
Version 1.0.0: 在一定范圍內(nèi)做了方法或者類的改變,應(yīng)該改動是比較大的,所以需要改變主版本號。
簡單吧,其實(shí)RubyGems的版本管理策略是非常簡單而且行之有效的,已經(jīng)成為了gem項(xiàng)目發(fā)布的一個規(guī)范了。
5.代理服務(wù)下如何使用gems
如果使用了代理服務(wù),相關(guān)命令需要使用 -p 選項(xiàng)(設(shè)置了環(huán)境變量則不用-p),同時設(shè)置代理.
windows:
格式:set HTTP_PROXY=http://www.proxy.com:port/
set HTTP_PROXY=http://yisl:Loveleidian123@10.19.0.7:80
gem install watir -p
linux:
格式:export HTTP_PROXY=http://www.proxy.com:port/
export HTTP_PROXY=http://10.19.0.7/
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,從本地或遠(yuǎn)程服務(wù)器
gem install rake --remote #安裝rake,從遠(yuǎn)程服務(wù)器
gem install watir -v(或者--version) 1.6.2#指定安裝版本的 (多謝 wpyily 提供)
gem uninstall rake #卸載rake包
gem list d #列出本地以d打頭的包
gem query -n '[0-9]' --local #查找本地含有數(shù)字的包
gem search log --both #從本地和遠(yuǎn)程服務(wù)器上查找含有l(wèi)og字符串的包
gem search log --remoter #只從遠(yuǎn)程服務(wù)器上查找含有l(wèi)og字符串的包
gem search -r log #只從遠(yuǎn)程服務(wù)器上查找含有l(wèi)og字符串的包
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的環(huán)境
使用方式
大概的準(zhǔn)則是這樣子(我這邊一律用縮寫)
i 是安裝
7. 搭建屬于自己的RubyGems服務(wù)器
RubyGems是一個用于Ruby的包管理工具,雖然并未包含在Ruby的發(fā)行版中,但是可以認(rèn)為是事實(shí)上Ruby世界中標(biāo)準(zhǔn)的發(fā)布Ruby程序和庫的工具,可以很方便的管理gem之間的依賴性。
如果你是在進(jìn)行Open Source的Ruby程序開發(fā),可以直接通過Rubyforge來發(fā)布gem。不過如果是自己的私有項(xiàng)目,可能就需要自己搭建一個Web server來進(jìn)行g(shù)em的發(fā)布了。如果系統(tǒng)中已經(jīng)安裝了RubyGems的話,通過gem server (gem help server看看用法)就可以啟動一個簡單的gem發(fā)布的server。不過很可能的,你已經(jīng)有一個Web Server在系統(tǒng)環(huán)境中了(如Apache Web Server),這個時候就通過以下的幾個步驟可以完成把這個Web Server改造成為一個gem distribution server:
1) 建立一個發(fā)布目錄,并設(shè)置Apache(或者其他的Web Server)使得這一目錄能夠通過Web訪問。并在這一發(fā)布目錄下建立一個名為gems的子目錄。
比如我們在htdocs目錄下建立一個目錄dist,并建立一個gems子目錄。
2) 拷貝打包好的gem到dist/gems目錄中。
如拷貝 allmighty-1.0.gem 到htdocs/dist/gems目錄中。
3) 在命令行界面中,進(jìn)入dist目錄,運(yùn)行“gem generate_index .”(或gem generate_index -d .)(請注意最后的一個點(diǎn),表示當(dāng)前目錄)。這一命令會對gems子目錄中的所有g(shù)em建立一個索引文件yaml,并存放在dist目錄下,以便可以通過gem install命令安裝時查找。
4) You’re done~
在這之后,你就可以通過”gem install allmighty –source http://127.0.0.1:8808/dist/”命令來安裝你新發(fā)布的gem了。
(先啟動該httpServer:如webrick 可在命令行下打 gem server啟動在8808 port 上面,將你這臺機(jī)器裡面所有安裝的 gem 列出來,並且你可以快速的看到你所下載 gem 的 rdoc,相當(dāng)?shù)姆奖?)
5) 如果以后還有新的gem需要發(fā)布或者有新的版本的gem需要發(fā)布,請從步驟2)開始繼續(xù)即可。
關(guān)于RubyGems,有一本很好的書,介紹了其使用、開發(fā)和發(fā)布等,有興趣的話可以看看。
8. gem 本地安裝
1).在gems目錄下面找到所有需要更新的模塊(如allmighty)
2).到rubyforge上下載該模塊的安裝包, 以.gem結(jié)束(allmighty-1.0.gem )
3).進(jìn)入本地安裝包目錄, 運(yùn)行 gem install allmighty-1.0.gem --local
4).你會發(fā)現(xiàn) allmighty gems上已經(jīng)更新了
注意要用rails console來做, 比較安全.