システムの 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