2009-11-24 27 views
0

是否有可能通過爲任何缺少的包含添加自動下載和安裝代碼來重寫默認的「require」(假設缺少的包含作爲ruby gem發佈)。Ruby:準時制寶石安裝?

在Ruby沒有與shell進行接口的情況下,哪種方法無效。但我仍然認爲這將是一個有趣的想法。

今天有沒有這樣的機制?

編輯:
刪除了關於密碼檢查的部分。我剛剛檢查和gem install似乎並不需要我輸入密碼。

回答

1

您將能夠劫持require方法,以便在試圖對require進行嘗試時安裝寶石,但仍然無法訪問當前進程中新安裝的gem,因爲gem索引必須重新加載。

我明白意圖,但我認爲鍛鍊可能不值得。

0

安裝新鮮寶石時,寶石將安裝在GEM_HOME中。如果這不是可寫的,那麼它將嘗試在用戶的目錄.gem目錄(至少在* NIX)。

你當然可以編寫腳本。在某種程度上,Rail的rake gems:build就是這樣。只是不需要。

但是,我會建議對此。您可能會遇到構建,版本控制,依賴性和網絡問題。也可能是安全問題。

PS:Francis Hwang前段時間做了一些相關的事情,雖然只是作爲一種要求,而不是一個要求的寶石。

http://fhwang.net/2005/11/01/urirequire-I-got-yer-Web-2-0-right-here

0

一個更好的選擇是使用bundler和分發所需的寶石與應用。

這也是相當簡單寫一個腳本來引導寶石的安裝,如果你沒有 希望他們與你的代碼發佈(使用捆綁安裝/檢查命令)