/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:103: warning: already initialized constant VERSION

Just upgraded from Ruby 1.9.1 to 1.9.2 and Passenger (mod_rails) was throwing some crazy errors. The “gem” command was also throwing some errors. Turns out rubygems is trying to read your gems from an old 1.9.1 directory. The fix is to delete everything rubygem-related in /usr/local/lib/ruby/site_ruby/1.9.1/.

Some links for further reading on the issue:

http://www.ruby-forum.com/topic/215219

http://bhuga.net/2010/08/gem-problems-when-upgrading-ruby-192-macports

http://www.ruby-forum.com/topic/213689

The Passenger (mod_rails) error:

/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:103: warning: already initialized constant VERSION
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:103: warning: already initialized constant RubyGemsVersion
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:147: warning: already initialized constant MUTEX
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:149: warning: already initialized constant RubyGemsPackageVersion
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:155: warning: already initialized constant WIN_PATTERNS
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1040: warning: already initialized constant MARSHAL_SPEC_DIR
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1045: warning: already initialized constant YAML_SPEC_DIR
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:635:in `path': undefined local variable or method `default_path' for Gem:Module (NameError)
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:68:in `installed_spec_directories'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:58:in `from_installed_gems'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:883:in `source_index'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_path_searcher.rb:81:in `init_gemspecs'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_path_searcher.rb:13:in `initialize'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:841:in `new'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:841:in `block in searcher'
    from :10:in `synchronize'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:840:in `searcher'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:479:in `find_files'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:983:in `load_plugins'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1139:in `'
    from :29:in `require'
    from :29:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.7/lib/phusion_passenger/utils.rb:25:in `'
    from :29:in `require'
    from :29:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.7/bin/passenger-spawn-server:64:in `rescue in 
' from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.7/bin/passenger-spawn-server:29:in `
' [ pid=2450 file=ext/apache2/Hooks.cpp:725 time=2010-09-03 23:57:34.206 ]: Unexpected error in mod_passenger: Cannot spawn application '/home/admin/yapruby.simande.com': The spawn server has exited unexpectedly. Backtrace: in 'virtual boost::shared_ptr<:application::session> Passenger::ApplicationPoolServer::Client::get(const Passenger::PoolOptions&)' (ApplicationPoolServer.h:471) in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:521)

You get this error message when running “gem” command:

/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:68:in `installed_spec_directories': undefined method `path' for Gem:Module (NoMethodError)
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:58:in `from_installed_gems'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:883:in `source_index'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_path_searcher.rb:81:in `init_gemspecs'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_path_searcher.rb:13:in `initialize'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:841:in `new'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:841:in `block in searcher'
    from :10:in `synchronize'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:840:in `searcher'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:479:in `find_files'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:983:in `load_plugins'
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1139:in `'
    from :29:in `require'
    from :29:in `require'
    from /usr/local/bin/gem:8:in `
'
How to install a plugin from a git repository branch

Was implementing nested_has_many_through and came across this error:

Cannot dissociate new records through 'Post#post_tags' on '#'. Both records must have an id in order to delete the has_many :through record associating them.

Apparently I needed to use the rails-2.3 branch, which you can install like so:

script/plugin install git://github.com/username/repo.git -r branch_name