我想配置宝石只使用系统宝石 - 从来没有在$HOME/.gem
。这是因为我正在编写一个脚本,它将访问Gem.path
,我不希望它返回到我的主目录中的宝石路径。我该如何配置gem才能使用系统宝石?
我敢肯定我没有明确设置GEM_HOME
或类似的东西在我的.bashrc
,.bash_login
等
但Gem.path
返回我的主目录宝石第一:
irb
> Gem.path
=> ["/home/nfm/.gem/ruby/1.9.1", "/usr/local/lib/ruby/gems/1.9.1"]
我能阻止这种从发生?它在哪里配置?或者它只是默认首先查看homedir?
如果我不能配置这个,我可以用regexp hackery返回gems的系统路径吗?
更多细节:
which ruby
/usr/local/bin/ruby
ruby --version
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
gem env
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/lib/ruby/gems/1.9.1
- /home/nfm/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
更新:
因此很明显,这可以在~/.gemrc
配置:
# Note the use of a symbol before the colon - the string version doesn't work!
:gempath:
- /usr/local/lib/ruby/gems/1.9.1
然而,这似乎并没有生效,如果你开火了irb
。这事做的事实,该配置文件是YAML,显然yaml
时irb
启动(不知道在这一个!)不加载:
$ irb
> Gem.path
=> ["/home/nfm/.gem/ruby/1.9.1", "/usr/local/lib/ruby/gems/1.9.1"]
> Gem.configuration.path
=> ["/usr/local/lib/ruby/gems/1.9.1"]
# Ready for a WTF moment?
> Gem.path
=> ["/usr/local/lib/ruby/gems/1.9.1"]
,则回答下面似乎是唯一的一致的方式来获得正确的行为,即使你认为~/.gemrc
可以工作,并且将是一种更好的方式来包装你的配置。
但是,设置在我~/.gemrc
:gempath:
曾在剧本中我Rakefile
是上下文的Rails应用程序,大概是因为YAML被明确载入。
不确定到底是怎么回事,但这个解释似乎与我在这里看到的一致。
Mod up! :P
搞混了一段时间后,这个似乎是得到正确的行为的唯一途径。查看更新的问题,解释为什么'.gemrc'中的配置对我无效。 – nfm 2010-09-12 23:44:16