Ruby在Mac OS X 10.6.8中手动编译时的GEM在哪里?

MrB*_*MrB 15 ruby gem path

我在Snow Leopard上手动构建了Ruby 1.9.2.现在我找不到旧的GEM文件.我猜他们现在处于不同的道路上.所以我有三个问题:

  • 什么是"旧的"宝石路径,在哪里gem install sinatra放置sinatra宝石?
  • 什么是"新"gem路径,这是我手动构建Ruby时设置的?
  • 我如何更改它,以便Ruby再次发现我的宝石?

jas*_*man 39

gem env在命令提示符下键入(使用旧的Ruby安装的gem命令)可以得到类似于:

> RubyGems Environment:
>   - RUBYGEMS VERSION: 1.3.6
>   - RUBY VERSION: 1.9.1 (2009-07-16 patchlevel 243) [i386-mingw32]
>   - INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1
>   - RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe
>   - EXECUTABLE DIRECTORY: C:/Ruby19/bin
>   - RUBYGEMS PLATFORMS:
>     - ruby
>     - x86-mingw32
>   - GEM PATHS:
>      - C:/Ruby19/lib/ruby/gems/1.9.1
>      - C:/Users/Username/.gem/ruby/1.9.1
>   - GEM CONFIGURATION:
>      - :update_sources => true
>      - :verbose => true
>      - :benchmark => false
>      - :backtrace => false
>      - :bulk_threshold => 1000
>   - REMOTE SOURCES:
>      - http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)

(在Windows上......我想Snow Leopard会有类似的格式)

GEM PATHS字段在这里很有趣.如果转到列出的那些目录,则应该看到名为cache的文件夹.这将包含与该特定目录中所有已安装的gem相对应的.gem文件列表.您应该能够调用gem install *gemname*每个gem文件(使用新的 Ruby install的gem命令).

编辑:错误地提到安装目录而不是GEM路径.Greg提醒我,Rubygems的特定安装有多个位置.需要检查所有这些位置以查找Ruby安装所使用的gem.


the*_*Man 9

你的"旧"宝石将与Mac捆绑的Ruby相关,因为该gem命令包含在Ruby 1.8.7中,这是Snow Leopard的库存.如果你的which ruby节目/usr/bin/ruby,你的宝石环境应该类似于:

- GEM PATHS:
   - /Library/Ruby/Gems/1.8
   - /Users/greg/.gem/ruby/1.8
   - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
Run Code Online (Sandbox Code Playgroud)

如果您正在使用RVM,您可以告诉它将您的gemsystemgemset 复制到RVM控制下的gem.我没有尝试这样做,因为我立即安装RVM并让它处理我所有的Ruby安装,然后我忽略了系统的安装.

如果您的which ruby节目/usr/local/bin/ruby那么该gem env命令应该反映您从源编译的版本的更改路径.

我很好奇,为什么你会手工建立它,当RVM可处理所有的配置和安装,并在很大程度上删除有关的任何问题,其中的东西,以及是否你刚刚践踏了系统的安装版本.

当RVM安装了Ruby版本时,它将全部存在,~/.rvm并且您的Gems也将很好地位于那里.相对于每个版本的Ruby,您将能够将gem作为gemsets进行管理,并立即来回切换.或者,更好的是,您可以在已安装的每个Ruby版本中运行命令/程序来使用它们进行测试rvm ruby 'some command'.

请注意,在上面的gem env输出中,gem位于磁盘上的三个独立区域中.在RVM的控制下,它们位于RVM的沙箱中:

- GEM PATHS:
   - /Users/greg/.rvm/gems/ruby-1.9.2-p0
   - /Users/greg/.rvm/gems/ruby-1.9.2-p0@global
Run Code Online (Sandbox Code Playgroud)

如果我愿意的话,这对我来说支持它们或者将它们吹走是微不足道的.

我曾经在我的Mac和Linux机器上从源代码编译我的红宝石.我现在使用RVM.它比手工做得好得多.


Ole*_*ann 4

我相信 OS X 上的标准 gem 安装路径是:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/
Run Code Online (Sandbox Code Playgroud)