RubyGems 是 Ruby 的套件管理工具,用來安裝各式各樣的第三方函式庫。
Ruby 1.9 內建 RubyGems,但盡量升級到最新版本(Bug 更少、功能更多)。
Ruby 寫成的函式庫通常會打包成 RubyGem 的形式(簡稱 Gem)。
譬如:Rails 是一個用 Ruby 寫的 RubyGem。
請看 Rubygems and Bundler 這個介紹 RubyGems 與 Bundler 的影片。
Gem 也有寶石的意思 :gem: :gem: :gem: :gem: :gem: :gem: :gem: :gem:。
RubyGems 提供一個可執行檔案,叫做 gem
。以下簡單介紹每一個命令。
$ gem
或
$ gem help
$ gem -v
2.2.2
$ gem update --system
支援正規表示法(如下例 ^
):
$ gem search ^rails
*** REMOTE GEMS ***
rails (4.1.1 ruby)
rails-3-settings (0.1.1 ruby)
rails-action-args (0.1.1 ruby)
rails-admin (0.0.0 ruby)
rails-admin-scaffold (0.0.5 ruby)
rails-adsense-helper (0.0.2 ruby)
rails-adsense_helper (0.0.1 ruby)
rails-ajax (1.0.0.20140320 ruby)
rails-alertify (0.3.2 ruby)
rails-alpha_numeric_validator (0.1.2 ruby)
rails-analytics (0.0.3 ruby)
rails-and-solid (0.9.1 ruby)
rails-angular-ui-router (0.0.1 ruby)
... (以下略) ...
去 https://rubygems.org (RubyGems 官方托管平台)搜索以 rails
開頭的 RubyGem。
每筆結果有「最新的版本資訊」與「使用何種的 Ruby 實作」寫成。
$ gem install jekyll
Fetching: sass-3.3.7.gem (100%)
Successfully installed sass-3.3.7
Fetching: jekyll-sass-converter-1.0.0.gem (100%)
Successfully installed jekyll-sass-converter-1.0.0
Fetching: coffee-script-source-1.7.0.gem (100%)
Successfully installed coffee-script-source-1.7.0
...(略)...
Fetching: fast-stemmer-1.0.2.gem (100%)
Building native extensions. This could take a while...
Fetching: liquid-2.5.5.gem (100%)
Successfully installed liquid-2.5.5
Fetching: jekyll-2.0.2.gem (100%)
Successfully installed jekyll-2.0.2
30 gems installed
安裝 Jekyll 以及 Jekyll 所有相依的 RubyGems。
有一些 Gem 不是以純 Ruby 寫成,而是用 C 寫了擴充功能,則安裝時會看到:
Building native extensions. This could take a while...
如上例的 fast-stemmer-1.0.2.gem
。
在安裝 RubyGem 時,會順道把該 RubyGem 的文件一起安裝,不想安裝(通常不會用到),可以在 gem install
時傳入 --no-document
。
會以字母 A-Z 順序列出本機已安裝的 RubyGem。
$ gem list
*** LOCAL GEMS ***
bigdecimal (1.2.4)
blankslate (2.1.2.4)
bundler (1.6.2)
...(略)...
timers (2.0.0)
toml (0.1.1)
yajl-ruby (1.1.0)
$ gem uninstall jekyll
Remove executables:
jekyll
in addition to the gem? [Yn]
Removing jekyll
Successfully uninstalled jekyll-2.0.2
$ gem uninstall sass
You have requested to uninstall the gem:
sass-3.3.7
jekyll-sass-converter-1.0.0 depends on sass (~> 3.2)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN]
ERROR: While executing gem ... (Gem::DependencyRemovalException)
Uninstallation aborted due to dependent gem(s)
由於 jekyll-sass-converter 用到了 sass 這個 RubyGem,會詢問是否確定要移除。
$ gem server
Server started at http://0.0.0.0:8808
Server started at http://[::]:8808
會在 http://0.0.0.0:8808 列出所有已安裝 RubyGem 的文件。
$ gem fetch rake
Fetching: rake-10.3.1.gem (100%)
Downloaded rake-10.3.1
$ ls
rake-10.3.1.gem
$ gem unpack rake
Unpacked gem: 'path/to/this/directory/rake-10.3.1'
$ tree rake-10.3.1 -L 1
rake-10.3.1
├── History.rdoc
├── MIT-LICENSE
├── Manifest.txt
├── README.rdoc
├── Rakefile
├── bin
├── doc
├── lib
├── rakelib
└── test
5 directories, 5 files
$ gem environment
$ gem outdated
$ gem sources
*** CURRENT SOURCES ***
https://rubygems.org