《Ruby程序员修炼之道》(第2版)—第1章1.2节剖析Ruby的安装
本節書摘來自異步社區《Ruby程序員修煉之道》一書中的第1章,第1.2節剖析Ruby的安裝,作者【美】David A. Black(戴維 A. 布萊克),更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
1.2 剖析Ruby的安裝
在系統上安裝Ruby意味著在許多磁盤目錄中安裝了Ruby語言的庫和支持文件。大多數時候,Ruby都知道如何找到其所需要的這些目錄而不用彈出提示。但是了解Ruby安裝的知識對了解Ruby本身大有益處。
查看Ruby的源代碼
除了Ruby安裝目錄體系之外,Ruby的源代碼目錄也安裝好了。如果沒有,可以到Ruby的主頁中下載。源代碼目錄中包含了許多在最終安裝中出現的Ruby文件和許多已編譯為目標文件并安裝好的C語言文件。另外,源代碼目錄包含了一些如ChangeLog和軟件授權文件這樣的資料類型文件。
Ruby安裝文件的位置很容易獲取。要得到這些信息,只需要在irb會話中加載名為rbconfig的Ruby庫。rbconfig是一個接口,通過它可以得到關于Ruby安裝的許多內部編譯的配置信息,可以通過irb的命令行標志-r和指定的包名調用irb去加載它:
$ irb --simple-prompt -rrbconfig
現在可以獲取這些信息了。例如,可以找到Ruby可執行文件(包括ruby和irb)的安裝目錄:
RbConfig::CONFIG["bindir"]
RbConfig::CONFIG是一個引用散列(hash,是一種數據結構)的常量,用于在Ruby中保存配置信息。字符串"bindir"是散列的主鍵。用"bindir"這個主鍵查詢散列將返回對應的值,這個值是安裝二進制文件的目錄名。
其余的配置信息也使用相同的方式獲取:通過散列的主鍵訪問配置信息中的值。如果要獲得其他安裝信息,在irb命令中替換bindir為其他詞語。但是每次都要遵循相同的基本原則:RbConfig::CONFIG["術語"]。表1-5概括了這些術語及其指向的目錄。
這就是對Ruby主要的安裝目錄和其包含內容的一個概述。此刻不必記住它們,但要意識到需要時如何找到它們(或者好奇時瀏覽一下并查看Ruby的代碼示例!)。
1.2.1 Ruby標準庫子目錄(RbConfig::CONFIG[rubylibdir])
在rubylibdir目錄中,可以看到用Ruby編寫的程序文件。這些文件提供了標準庫的功能,如果需要它們提供的功能,可以在程序中請求(require)它們。在本目錄中可以找到以下文件。
- cgi.rb:CGI編程工具庫。
- fileutils.rb:易用的文件操作實用工具。
- tempfile.rb:自動創建臨時目錄的機制。
- drb.rb:分布式編程工具。
在標準庫中有一些庫,如drb,由多個文件構成??梢钥吹侥夸浿杏幸粋€drb.rb文件,并且整個drb子目錄包含了drb庫的所有組件。
瀏覽rubylibdir子目錄能夠對Ruby提供的編程工具所能完成的任務有一個感性認識(也許一開始就是顛覆性的)。大多數程序員只使用了這些工具的子集,但這些巨大的編程庫集合的子集也已經能夠提供許多功能。
1.2.2 C語言擴展目錄(RbConfig::CONFIG[archdir])
通常archdir目錄位于rubylibdir下的第一級目錄中,它包含了特定架構的擴展和庫文件。通常在目錄中,這些文件都是以.so、.dll、.bundle(依賴于硬件和操作系統)為文件擴展名的。這些文件是C語言擴展:它們是二進制文件,是運行時可加載的文件,由Ruby的C語言擴展代碼生成,并在Ruby安裝過程中編譯成為二進制格式。
如在rubylibdir目錄中的Ruby語言程序文件,archdir目錄中的文件包含了能夠加載到用戶程序的標準庫組件。(除此之外,還有一些rbconfig的擴展文件,這些擴展可以使用irb命令去發現它們。)這些文件不是用戶可讀的,但是Ruby的解釋器可以讀懂它們。從Ruby程序員的視角來說,由于它們都被編譯為了二進制格式文件,所以所有的標準庫使用都是一樣的,不管它們是用Ruby編寫的還是用C語言編寫的。
安裝在archdir目錄的文件,每個平臺安裝的都不相同,它們依賴于其被編譯的擴展。這個擴展又反過來取決于由個人請求編譯的內容和Ruby能夠編譯的擴展所組成的代碼庫。
1.2.3 site_ruby(RbConfig::CONFIG[sitedir])和vendor_ruby (RbConfig::CONFIG[vendordir])目錄
在Ruby安裝目錄中包括一個名為site_ruby的子目錄,它用于存儲用戶和系統管理員安裝的第三方擴展和庫文件。該目錄中可能包括了用戶所寫的程序,還有一些從其他網站下載的工具包,以及Ruby庫文件的存檔。
site_ruby目錄包含Ruby語言和C語言的不同子目錄(是RbConfig::CONFIG中不同的兩個項,分別為sitelibdir和sitearchdir),就這個意義而言,其與Ruby主安裝目錄并存在一個目錄下。當用戶請求一個擴展,Ruby解釋器檢查site_ruby下的子目錄,也同時檢查主rubylibdir目錄和主archdir目錄。
與site_ruby目錄并存的是vendor_ruby目錄。第三方的擴展都安裝于此。vendor_ruby目錄首次出現是在Ruby1.9中,從這兩個目錄中獲得的包仍然在不斷發展中。
1.2.4 gems目錄
RubyGems實用工具是打包和發布Ruby庫文件的標準方式。當用戶安裝gems(被稱為包)時,未綁定的庫文件則會放置于gems目錄。這個目錄沒有在配置數據結構(RbConfig::CONFIG) 中列出,但是通常都和site_ruby在同一級目錄。假如讀者找到了site_ruby,便可以看看gems目錄中還安裝了什么。在1.4.5節中將會了解更多關于gems的知識。
在這一節中,學到了Ruby調用擴展的機制和語義,這也是編寫和安裝擴展時需要用到的知識。
總結
以上是生活随笔為你收集整理的《Ruby程序员修炼之道》(第2版)—第1章1.2节剖析Ruby的安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Activiti实战. 导读
- 下一篇: MATLAB 数据分析方法(第2版)1.