代码之家  ›  专栏  ›  技术社区  ›  nfm

如何将gem配置为只使用系统gems?

  •  4
  • nfm  · 技术社区  · 14 年前

    我想将gem配置为只使用系统gems-而不是 $HOME/.gem . 这是因为我正在编写一个脚本 Gem.path 我不希望它返回到我的主目录中gems的路径。

    我很确定我还没有明确地设定 GEM_HOME 或者我的 .bashrc , .bash_login 等。

    但是 GEM.PATH 首先返回我的homedir gems:

    irb
    > Gem.path
    => ["/home/nfm/.gem/ruby/1.9.1", "/usr/local/lib/ruby/gems/1.9.1"]
    

    我能阻止这种事发生吗?它在哪里配置?或者只是默认先查找homedir?

    如果我不能配置这个,我可以返回系统路径为gems与regexp hackry?

    更多细节:

    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 会起作用的,是一个更好的方法来包装你的配置。

    但是,设置 :gempath: 在我的 ~/GEMRC 在脚本位于我的 Rakefile 在Rails应用程序中,可能是因为显式加载了yaml。

    不知道Yaml到底发生了什么,但这个解释似乎与我在这里看到的一致。

    振作起来!P

    1 回复  |  直到 14 年前
        1
  •  4
  •   sled    14 年前

    在此处覆盖:

    #in ~/.bashrc
    export GEM_PATH=/usr/local/lib/ruby/gems/1.9.1