高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

Ruby 語法放大鏡之「gem install 之後,那些 gem 安裝到哪裡去了?」

Ruby 語法放大鏡」系列短文主要是針對在大家學習 Ruby 或 Rails 時看到一些神奇但不知道用途的語法介紹,希望可以藉由這一系列的短文幫大家更容易的了解到底 Ruby 或 Rails 是怎麼回事。

在 Ruby 要安裝套件超簡單的,只要 gem install 指令加上套件的名字,敲完按下 Enter 鍵,就自動會連上網路、下載套件、安裝套件,一氣呵成:

$ gem install takami
Fetching: takami-0.0.1.gem (100%)
Successfully installed takami-0.0.1
Parsing documentation for takami-0.0.1
Installing ri documentation for takami-0.0.1
Done installing documentation for takami after 0 seconds
1 gem installed

如果該套件有需要其它套件,它也會一併順便一起下載、安裝。這個 takami gem 是我自己做的,其實沒有任何內容在裡面,所以可安心安裝!(咦?!)

所以我說那個套件呢?

安裝套件很簡單,但安裝好了之的那些檔案放哪去了? 執行 gem environmentgem env 可列出目前在這台電腦的設定:

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.5.1
  - RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-darwin14]
  - INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-2.3.1
  - USER INSTALLATION DIRECTORY: /Users/user/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-2.3.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-2.3.1/bin
  - SPEC CACHE DIRECTORY: /Users/user/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/user/.rvm/rubies/ruby-2.3.1/etc
  - RUBYGEMS PLATFORMS:
  ... 略

那個 INSTALLATION DIRECTORY 就是 gem 安裝的地方,裡面翻一下應該就可以找得到剛剛安裝的 takami 套件了。因為我是使用 RVM,所以 gem 的安裝路徑會在 .rvm 目錄裡。

打包帶走

如果想要下載這些套件的原始檔,可至 RubyGems 官網下載:

image

下載的回來的是一個 .gem 檔(例如:takami-0.0.1.gem),這個 .gem 本身也可以直接拿來安裝,同樣是使用 gem install 指令:

$ gem install takami-0.0.1.gem

這樣一樣可以達到安裝的目的。如果你對這個 .gem 檔的內容有興趣,可以使用 gem unpack 指令把它解開:

$ gem unpack takami-0.0.1.gem
Unpacked gem: '/private/tmp/takami-0.0.1'

其實 .gem 檔案本質上就只是個壓縮檔,很多解壓縮程式應該都打得開。或是你本來就已經有安裝那個 gem 的話,也可以直接這樣做:

$ gem unpack takami
Unpacked gem: '/private/tmp/takami-0.0.1'

gem unpack 這個指令可以把 gem 解開到目前所在的目錄了(所以如果你解開我這個 takami 的 gem 就會真的看到裡面一點料都沒有了,是個空包彈)

不過通常這些 gem 的作者都會順便提供 Github 連結,直接上去看會更方便。

Comments