需要為您的組織或本地端提供 gems 嗎?
有時您會想要執行自己的 gem 伺服器。當您和同事都沒有網路連線時,您可能想要分享 gems。您可能有一些組織內部的私人程式碼,您希望將其作為 gems 來散發和管理,而不會公開原始碼。
有幾個選項可以設定伺服器來主機組織內的寶石。本指南涵蓋 Gemstash、Gem in a Box 和 Gemirro 專案。它也討論如何在開發期間使用這些伺服器作為寶石來源。
執行 Gemstash
Gemstash 同時是遠端伺服器(例如 https://rubygems.org)的快取和私人寶石來源。
要開始,請安裝 gemstash
$ gem install gemstash
安裝後,使用下列指令啟動 Gemstash 伺服器
$ gemstash start
預設情況下,伺服器在埠 9292 上執行。
如果您想將其用作快取,您可以告訴 Bundler 使用 Gemstash 從 RubyGems.org 尋找寶石
$ bundle config mirror.https://rubygems.org https://127.0.0.1:9292
使用此組態,透過 bundler 從 RubyGems.org 擷取的所有寶石都會由 Gemstash 快取。
您也可以推送您自己的寶石,並使用 gemstash 伺服器作為私人寶石來源。有關 gemstash 功能和指令的更多資訊,請閱讀 Gemstash 文件。
執行 Gem in a Box
對於具有更多功能的伺服器,包括推送寶石的能力,請試用 Gem in a Box 專案。
要開始,請安裝 geminabox
[~/dev/geminabox] gem install geminabox
建立一個用於儲存寶石的資料目錄
[~/dev/geminabox] mkdir data
在 config.ru
檔案中包含下列內容
[~/dev/geminabox] cat config.ru
require "rubygems"
require "geminabox"
Geminabox.data = "./data"
run Geminabox::Server
並執行伺服器
[~/dev/geminabox] rackup
[2011-05-19 12:09:40] INFO WEBrick 1.3.1
[2011-05-19 12:09:40] INFO ruby 1.9.2 (2011-02-18) [x86_64-darwin10.5.0]
[2011-05-19 12:09:40] INFO WEBrick::HTTPServer#start: pid=60941 port=9292
現在您可以使用 gem inabox
指令推送寶石。您第一次執行此操作時,系統會提示您輸入寶石伺服器的位址。
[~/dev/secretgem] gem build secretgem.gemspec
Successfully built RubyGem
Name: secretgem
Version: 0.0.1
File: secretgem-0.0.1.gem
[~/dev/secretgem] gem inabox ./secretgem-0.0.1.gem
Enter the root url for your personal geminabox instance. (E.g. http://gems/)
Host: https://127.0.0.1:9292
Pushing secretgem-0.0.1.gem to https://127.0.0.1:9292/...
在 https://127.0.0.1:9292 上也有可用的網頁介面。有關更多資訊,請閱讀 Gem in a box README。
執行 Gemirro
如果您需要一個簡單的應用程式,讓您可以輕鬆建立您自己的 RubyGems 鏡像,而無需推送或在組態檔中撰寫所有您想要的寶石,請試用 Gemirro。它在沒有任何驗證的情況下進行鏡像,您可以在寶石目錄中新增您的私人寶石。此外,要鏡像來源,您只需要啟動伺服器,寶石就會在需要時自動下載。
要開始,請安裝 gemirro
$ gem install gemirro
設定鏡像的過程相當容易,可以在幾秒鐘內完成。
第一步是設定一個新的空鏡像目錄。這透過執行 gemirro init
指令來完成。
$ gemirro init /srv/http/mirror.com/
建立後,你可以編輯名為 config.rb
的主設定檔。此設定檔指定要鏡像的來源、目的地目錄、伺服器主機和埠等。
設定完成後,如果你在 define_source
中新增 gem,你可以透過執行下列指令來提取它們
$ gemirro update
下載所有 Gem 後,你需要產生所有已安裝檔案的索引。這可以透過下列方式完成
$ gemirro index
最後,啟動伺服器,所有要求都會檢查是否偵測到 gem,必要時下載它們並立即產生索引。
$ gemirro server --start
$ gemirro server --status
$ gemirro server --restart
$ gemirro server --stop
網頁介面會在 https://127.0.0.1:2000 上提供。
如需更多資訊,請閱讀 Gemirro 的 README。
從你的伺服器使用 gem
無論你使用 Gemstash、Gem in a Box、Gemirro 或其他 gem 伺服器,你都可以設定 RubyGems 使用你的本機或內部來源,以及其他來源,例如 http://rubygems.org。
使用 gem sources
指令將 gem 伺服器新增到你的系統範圍 gem 來源。下列 URL 是透過 rackup
執行 Gem in a Box 的預設值
gem sources --add https://127.0.0.1:9292
然後像往常一樣安裝 gem
[~] gem install secretgem
Successfully installed secretgem-0.0.1
1 gem installed
如果你使用 Bundler,則可以在 Gemfile
中將此伺服器指定為 gem 來源
[~/dev/myapp] cat Gemfile
source "https://127.0.0.1:9292"
gem "secretgem"
[~/dev/myapp] bundle
Using secretgem (0.0.1)
Using bundler (1.0.13)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.