国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
創(chuàng)建你的第一個(gè)Gem


By pilipala | Published: 2011/11/15

原文作者:John McAliley,原文地址,翻譯:Pilipala

你在Ruby世界看到到處都是Gem。他們幾乎是所有的Ruby應(yīng)用程序的核心。我承認(rèn)當(dāng)我試著建立第一個(gè)Gem的時(shí)候,我有點(diǎn)戰(zhàn)戰(zhàn)兢兢。但我很快就發(fā)現(xiàn)了,這玩意簡(jiǎn)單得要死。在這個(gè)博客系列中,我將涵蓋從頭開(kāi)始創(chuàng)建一個(gè)Gem的基礎(chǔ),然后轉(zhuǎn)移到更高級(jí)的主題,包括Gem生成工具和Rails引擎。首先,對(duì)于你們這些Ruby有新手,第一個(gè)問(wèn)題是:什么是Gem?簡(jiǎn)而言之,它是打包的Ruby代碼。在最低限度,Gem包括一個(gè)Ruby文件和一個(gè)gemspec。gemspec(Gem規(guī)范)描述Gem信息,RubyGems包管理器需要這些信息安裝Gem。

RubyGems包管理器可以下載,并安裝Gem到你的系統(tǒng),并允許你在其他Ruby程序中使用這些Gem。Ruby 1.9默認(rèn)安裝RubyGems。如果你使用的是Ruby 1.9之前的版本,你可以在這里下載RubyGems。在Ruby 1.9之前版本的應(yīng)用程序中使用RubyGems,你需要在你的應(yīng)用程序,加入這一行 :

require 'rubygems'

Ruby 1.9中不需要這么做,因?yàn)镽ubyGems已經(jīng)被包含在Ruby 1.9中。

Gem規(guī)范(Gem Specification)

正如我在前面提到,Gem的規(guī)范描述了Gem。讓我們看看一個(gè)基本的gemspec文件:

  1. Gem::Specification.new do |s|  
  2.   s.name = %q{my_gem}  
  3.   s.version = "0.0.1"  
  4.   s.date = %q{2011-09-29}  
  5.   s.summary = %q{my_gem is an awesome gem}  
  6.   s.files = [  
  7.     "Gemfile",  
  8.     "Rakefile",  
  9.     "VERSION",  
  10.     "lib/my_gem.rb"  
  11.   ]  
  12.   s.require_paths = ["lib"]  
  13. end  

gemspec是一個(gè)相當(dāng)簡(jiǎn)單的文件,描述你的Gem的各個(gè)方面。在上面的例子gemspec中的文件中,我只列出必需的屬性。
前4個(gè)屬性是不言自明?!拔募睂傩灾辛谐霭ㄔ贕em中的所有文件。
“require_paths”屬性指定的目錄,其中包含Ruby文件應(yīng)該被這個(gè)Gem所加載。gemspec所用到的完整屬性列表,請(qǐng)參考這里。

這是一些簡(jiǎn)單的基礎(chǔ)知識(shí),現(xiàn)在讓我們切入正題,尋找更有趣的東西。

從頭開(kāi)始創(chuàng)建一個(gè)Gem

1、建立Gem的基本文件結(jié)構(gòu):

輸入shell指令,并創(chuàng)建Gem需要的目錄:

$ mkdir awesome_gem$ cd awesome_gem$ mkdir lib

就這樣!你需要為你的Gem和一個(gè)lib目錄來(lái)存放你的Ruby文件的根目錄。

2、創(chuàng)建的gemspec

我們將使用上一節(jié)gemspec文件作為模板。創(chuàng)建一個(gè)名為“awesome_gem.gemspec”在你的Gem的根目錄中。然后添加一些代碼,以成為一個(gè)有效的gemspec:

  1. Gem::Specification.new do |s|  
  2.   s.name = %q{awesome_gem}  
  3.   s.version = "0.0.0"  
  4.   s.date = %q{2011-09-29}  
  5.   s.summary = %q{awesome_gem is the best}  
  6.   s.files = [  
  7.     "lib/awesome_gem.rb"  
  8.   ]  
  9.   s.require_paths = ["lib"]  
  10. end  

這個(gè)文件包含了一個(gè)gemspec標(biāo)準(zhǔn)所需的屬性,并且顯示我們有一個(gè)“l(fā)ib”目錄。在lib目錄中的文件“awesome_gem.rb”將被用來(lái)保存這個(gè)Gem的Ruby代碼。

3、添加一些代碼

為了簡(jiǎn)單起見(jiàn),我們將只用一個(gè)Ruby文件在這個(gè)Gem里:/lib/awesome_gem.rb,你會(huì)看到這種結(jié)構(gòu)類(lèi)型在大多數(shù)你遇到的Gem中。 “l(fā)ib”內(nèi)的根文件通常會(huì)與Gem的名稱(chēng)相匹配。本例中,“awesome_gem”和“/lib/awesome_gem.rb” 。

繼續(xù)創(chuàng)建這個(gè)文件,添加下面的代碼:

  1. module AwesomeGem  
  2.   class WhoIs  
  3.     def self.awesome?  
  4.       puts "YOU ARE AWESOME!!"  
  5.     end  
  6.   end  
  7. end  

這雖然不是什么改變世界的代碼,至少, awesome? 方法讓你感覺(jué)不錯(cuò)。這個(gè)Gem將允許你在其他Ruby程序里面使用 WhoIs 的類(lèi)方法awesome?。

正如我在第一部分中提到,RubyGems的將安裝Gem在你的應(yīng)用程序中,并使用Gem中的類(lèi)。

4、生成的Gem文件

現(xiàn)在,你有一些很棒的代碼,你將要?jiǎng)?chuàng)建一個(gè)Gem,所以你可以在另一個(gè)Ruby程序用這些代碼。RubyGems提供命令,讓你創(chuàng)建一個(gè)Gem。輸入下面命令在Gem的根目錄:

$ gem build awesome_gem.gemspec

此命令將建立Gem和輸出Gem文件,將包括版本號(hào)在文件名中。由于gemspec中版本屬性的值是“0.0.0”,Gem的文件將被命名為awesome_gem-0.0.0。
你應(yīng)該看到下面的輸出和對(duì)一些缺少的屬性警告:

Successfully built RubyGemName: awesome_gemVersion: 0.0.0File: awesome_gem-0.0.0.gem

你可以忽略這些警告,繼續(xù)在系統(tǒng)上安裝這個(gè)Gem。請(qǐng)注意,Gem文件被創(chuàng)建在當(dāng)前目錄中。

5、安裝Gem

現(xiàn)在,你有一個(gè)Gem文件,你可以使用RubyGems安裝這個(gè)Gem到你的計(jì)算機(jī)上。通常情況下,你安裝的Gem來(lái)源于外部,但不限于此。如果你有機(jī)會(huì)得到Gem文件,你可以通過(guò)指定Gem文件的位置將其安裝在本地。下面的命令在本地安裝awesome_gem.gem:

gem install awesome_gem.gemspec

你應(yīng)該得到以下輸出:

Successfully installed awesome_gem-0.0.01 gem installedInstalling ri documentation for awesome_gem-0.0.0...Installing RDoc documentation for awesome_gem-0.0.0...

耶!你剛創(chuàng)建了Gem!這個(gè)Gem現(xiàn)在已經(jīng)安裝在你的系統(tǒng),并準(zhǔn)備在另一個(gè)Ruby程序中使用。

6、Gem的另一個(gè)Ruby程序

創(chuàng)建一個(gè)新的Ruby文件將用來(lái)測(cè)試我們的Gem。讓我們叫它“be_awesome.rb”。你可以在你的系統(tǒng)中的任何位置創(chuàng)建此文件,然后添加下面的代碼,所以我們可以使用Gem中的“awesom?”類(lèi)方法。用 require “awesome_gem”,RubyGems將能夠找到Gem,把這個(gè)類(lèi)提供給你的程序。然后你只需要調(diào)用它。以下是代碼:

  1. require 'awesome_gem'  
  2. AwesomeGem::WhoIs.awesome?  

現(xiàn)在你可以運(yùn)行Ruby程序和測(cè)試你新創(chuàng)建的Gem,看看你是如何awesome的。通過(guò)命令行輸入:

ruby be_awesome.rb

你應(yīng)該看到在你的shell下面的輸出:

YOUR ARE AWESOME!

恭喜你,你只要在程序中使用你的新的Gem!雖然它還不值得放在GitHub上,跟朋友吹噓,但是, 你還是學(xué)會(huì)了如何從頭開(kāi)始創(chuàng)建一個(gè)Gem,并在另一個(gè)程序中使用它?,F(xiàn)在,你可以繼續(xù)前進(jìn),追求更大的進(jìn)步。

結(jié)論

雖然本教程是相當(dāng)簡(jiǎn)單,只涉及創(chuàng)建一個(gè)基本的Gem,我認(rèn)為它對(duì)新的Gem開(kāi)發(fā)者仍然很重要。

基礎(chǔ)知識(shí)給你一個(gè)進(jìn)入高級(jí)的主題良好基礎(chǔ)。平時(shí),我用Jeweler去創(chuàng)造Gem,這的確是一個(gè)功能強(qiáng)大的工具, 但我覺(jué)得手工從頭創(chuàng)建一個(gè)Gem之前就用這樣的生成工具,可能是有害的。

你需要了解如何構(gòu)建一個(gè)Gem的最簡(jiǎn)單的形式,才可以理解像Jeweler這樣的生成工具的背后是什么。雖然我建議在你第一次學(xué)習(xí)Gem開(kāi)發(fā)時(shí),手工從頭創(chuàng)建一個(gè)Gem。但是,當(dāng)你理解了基礎(chǔ)知識(shí),就沒(méi)什么理由拒絕使用生成器了。

生成器可以節(jié)省很多時(shí)間,因?yàn)樗麄兘o你一個(gè)很好的起始架構(gòu)。本系列的下一個(gè)博客后,將有關(guān)Gem的開(kāi)發(fā),以及更高級(jí)的主題,諸如:如何使用生成工具來(lái)開(kāi)始你的Gem開(kāi)發(fā)。以后的文章將解釋如何開(kāi)發(fā)Ruby on Rails的Gem。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
如何創(chuàng)建自己的ruby gem包
gollum筆記
RubyGems系列之創(chuàng)建自己的gem
Windows redis集群搭建
RubyGems簡(jiǎn)介
CentOS 5安裝ROR
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服