這都有關,因爲由gem
命令使用的寶石安裝目錄,看到了使用gem env
時,被設置爲一樣的東西:爲什麼我們將Ruby 1.9.2/1.9.3 gem安裝到1.9.1文件夾中?
<base_ruby_dir>/lib/ruby/gems/1.9.1
我的問題是爲什麼呢?
不應在文件夾被稱爲:
<base_ruby_dir>/lib/ruby/gems/1.9.x
或
<base_ruby_dir>/lib/ruby/gems/1.9
否則不可能有每紅寶石的一個版本,如:
c:/ruby191/lib/ruby/gems/1.9.1
c:/ruby192/lib/ruby/gems/1.9.2
c:/ruby193/lib/ruby/gems/1.9.3
不我知道的一個關鍵問題,我只是想知道。
好的,我明白了。那麼1.9.1是否意味着gem符合Ruby 1.9.1中使用的C接口?這種暴露實施細節不是嗎?從一個寶石的最終用戶的角度來看,我爲什麼要關心?我會不會像1.9.1和1.9.4一樣看到兩個文件夾?如果不是,我又爲何要關心? – Ben 2011-12-19 23:35:41
對。 C Api *絕對*暴露實現細節!寶石用戶不應該關心路徑。回答爲最後兩個問題編輯 – 2011-12-20 01:26:23
對我來說,問題是關於目錄命名約定。如果我們知道對Ruby的C API的更改會導致使用該版本的Ruby重新編譯所有gem,那麼我將得到一個名爲1.9.1的文件夾,其中包含*或*的文件夾,名稱爲1.9.2(管他呢)。如果我不能同時擁有(對於Ruby的一個版本),那麼1.9.x會更明智。我從來沒有見過用於存儲多個Ruby版本的寶石的相同文件夾 - 這實際上是一個真正的用例嗎? – Ben 2011-12-20 09:18:07