From a Far East Island

2007-12-26

[]RubyGemsを使ったRailsインストールでの注意点

やっと時間が取れたのでRuby on Railsインストールに挑戦。

ところがRubyGemsを使ってRailsインストールする所で手こずる。

$ sudo gem install rails --include-dependencies

このコマンドを実行するが、以下のエラーが帰って来た。

/opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError)
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/source_info_cache.rb:6
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/remote_installer.rb:12
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems.rb:112:in `manage_gems'
	from /opt/local/bin/gem:10

どうもsourceという名のファイルが無いというエラーのようだ。探しまわったあげくに、/opt/local/lib/ruby/gems/gems/sources-0.0.1/lib にsource.rbというファイルが有るのを発見。ファイルが有るが見えてないという状態のようだ。

このディレクトリRubyのロードパスを通してやる事で解決した。Rubyのロードパスは、シェル変数RUBYLIBに追加したいパスを記述する事で設定できる。私の場合は、bashなのだが、以下の2行を .bashrcに追加。

RUBYLIB=/opt/local/lib/ruby/gems/gems/sources-0.0.1/lib
export RUBYLIB

これで、gemのinstallコマンドが実行でき、Railsを無事インストールする事ができた。

残る疑問は、どうしてこの手順が必要だったのかと言うこと。

RubyGemsは、MacPortを利用してインストールした。このRubyGemsインストールの工程としてRubyのロードパスにこのsource.rbへのパスが設定されるべきだったのか。それとも、このsource.rbは、Rubyのロードパスが通ったディレクトリにコピーして使う物だったのか。