システムの gem のみを使用するように gem を構成したいと考えています$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"]
これを止めることはできますか?どこで構成されていますか? それとも、最初にホームディレクトリを調べるのがデフォルトですか?
これを構成できない場合、gem のシステム パスを正規表現ハッカーで返すことはできますか?
詳細:
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
が機能し、構成をまとめるより良い方法であると想定している場合でも.
ただし、おそらく yaml が明示的にロードされているため、:gempath:
my の設定はRails アプリ~/.gemrc
の my にあるスクリプトのコンテキストで機能しました。Rakefile
yaml で何が起こっているのか正確にはわかりませんが、この説明は私がここで見ているものと一致しているようです。
モッドアップ!:P