Misconfiguration on different machine

I created and have a rails app running on one machine. It is using
rails 2.1. I ran:

rake rails:freeze
and
rake gems:unpack

on my rails app to put all dependencies into the vendor directory.
Then I checked it into my repository.

On a different machine, I checked out the repository and tried to run

rake db:schema:load --trace

but I got an error (see at the bottom of this post). I am trying to
use sqlite3 on both machines. The db directory is owned by the user
that I'm trying to run as, so it should be able to create the
production sqlite database that is set in the configs. As far as I
can tell, sqlite3 and the ruby interface to it are installed correctly
on the second machine.

By freezing rails and unpacking the gems into the vendor directory, it
is my understanding that I should be able to move the app between
machines without worrying about the proper gems being installed. Is
this correct?

Here is the error I get. Can anybody point me in the right direction
to get this solved?

Thanks,
Jonathan

$ rake db:schema:load --trace
(in /home/websites/insurance)
** Invoke db:schema:load (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
undefined method `collect' for nil:NilClass
/usr/lib/ruby/1.8/rubygems/version.rb:237:in `initialize'
/usr/lib/ruby/1.8/rubygems/version.rb:29:in `new'
/usr/lib/ruby/1.8/rubygems/version.rb:29:in `initialize'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
gem_dependency.rb:104:in `new'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
gem_dependency.rb:104:in `specification'
/home/websites/insurance/vendor/rails/activesupport/lib/active_support/
core_ext/symbol.rb:11:in `__send__'
/home/websites/insurance/vendor/rails/activesupport/lib/active_support/
core_ext/symbol.rb:11:in `to_proc'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/locator.rb:81:in `map'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/locator.rb:81:in `plugins'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/loader.rb:63:in `locate_plugins'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/loader.rb:62:in `map'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/loader.rb:62:in `locate_plugins'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/loader.rb:27:in `all_plugins'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/loader.rb:22:in `plugins'
/home/websites/insurance/config/../vendor/rails/railties/lib/rails/
plugin/loader.rb:45:in `add_plugin_load_paths'
/home/websites/insurance/config/../vendor/rails/railties/lib/
initializer.rb:235:in `add_plugin_load_paths'
/home/websites/insurance/config/../vendor/rails/railties/lib/
initializer.rb:116:in `process'
/home/websites/insurance/config/../vendor/rails/railties/lib/
initializer.rb:93:in `send'
/home/websites/insurance/config/../vendor/rails/railties/lib/
initializer.rb:93:in `run'
/home/websites/insurance/config/environment.rb:13
/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
/home/websites/insurance/vendor/rails/activesupport/lib/active_support/
dependencies.rb:509:in `require'
/home/websites/insurance/vendor/rails/activesupport/lib/active_support/
dependencies.rb:354:in `new_constants_in'
/home/websites/insurance/vendor/rails/activesupport/lib/active_support/
dependencies.rb:509:in `require'
/home/websites/insurance/vendor/rails/railties/lib/tasks/misc.rake:3
/usr/lib/ruby/1.8/rake.rb:546:in `call'
/usr/lib/ruby/1.8/rake.rb:546:in `execute'
/usr/lib/ruby/1.8/rake.rb:541:in `each'
/usr/lib/ruby/1.8/rake.rb:541:in `execute'
/usr/lib/ruby/1.8/rake.rb:508:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/rake.rb:501:in `synchronize'
/usr/lib/ruby/1.8/rake.rb:501:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/rake.rb:518:in `invoke_prerequisites'
/usr/lib/ruby/1.8/rake.rb:1183:in `each'
/usr/lib/ruby/1.8/rake.rb:1183:in `send'
/usr/lib/ruby/1.8/rake.rb:1183:in `each'
/usr/lib/ruby/1.8/rake.rb:515:in `invoke_prerequisites'
/usr/lib/ruby/1.8/rake.rb:507:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/rake.rb:501:in `synchronize'
/usr/lib/ruby/1.8/rake.rb:501:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/rake.rb:494:in `invoke'
/usr/lib/ruby/1.8/rake.rb:1931:in `invoke_task'
/usr/lib/ruby/1.8/rake.rb:1909:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1909:in `each'
/usr/lib/ruby/1.8/rake.rb:1909:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1903:in `top_level'
/usr/lib/ruby/1.8/rake.rb:1881:in `run'
/usr/lib/ruby/1.8/rake.rb:1948:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1878:in `run'
/usr/bin/rake:28

What gems are you freezing bsesides rails gems?

One common problem with this is that you freeze, say my_gem-0.3.4, but the other machine has my_gem-0.3.5 installed. Rails loads the system gem because it is newer than the frozen one.

So, try ‘gem list’ and compare frozen gem versions with the ones installed.

The original machine has
hpricot-0.6.161
mechanize-0.8.3
and 2.1.0 of all the rails related gems.

The new machine does not have hpricot or mechanize. It has rails
version 2.0.2-1 installed through the ubuntu package manager.

It's my understanding that if you do the gem freezing step, it
shouldn't matter what gems are installed on the machine. Is my
thinking right or wrong?

That is only true for rails gems. Other gems may conflict.

Have you resolved the issue?

I got the problem fixed.

The second machine I was trying to load the application on only had a
really old version of rails installed through my distro's package
manager. I removed that, installed a new version of rails through
rubygems, and it worked. I guess I don't understand the point of
freezing the rails gems if it doesn't work in that situation, but I
have it working either way.

Thanks,
Jonathan