Gemのパスを動的に変える方法。

Gem.pathにunshiftしただけではうまくいかない。ソースを見ながら試行錯誤して、以下でrequireできるのを確認した。

Gem.path.unshift("/path/to/your/local/gem")
Gem.source_index.spec_dirs = Gem::SourceIndex.installed_spec_directories
Gem.refresh

これでunshiftしたパスからロード出来るようになる。けど2行目が納得いかない。バグじゃないだろうか……。

rubygemsのバージョンは1.3.5。rubyは1.8.6。

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.8.6 (2008-08-11 patchlevel 287) [i686-darwin9.6.0]
  - INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /opt/local/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-9
:

サンプル。