title: rake db:migrate produces "rake aborted! could not find table" error
body: <p>I'm new to Rails and I'm building a simple project-tracking app for my employer. I've been developing the app on my Mac and pushing it to github. I just managed to clone my github repo to a windows box behind my company's firewall in hopes of letting colleagues try the app out.</p>
  
  <p>But when I go to rake db:migrate to initialize the database on the windows box, I get the following error messages:</p>
  
  <pre><code>$ rake db:migrate --trace
  ** Invoke db:migrate (first_time)
  ** Invoke environment (first_time)
  ** Execute environment
  rake aborted!
  Could not find table 'projects'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/connection_adapters/sqlite3_adapter.rb:29:in `table_structure'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/faker-0.3.1/lib/extensions/object.
  rb:3:in `returning'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/connection_adapters/sqlite3_adapter.rb:28:in `table_structure'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/connection_adapters/sqlite_adapter.rb:228:in `columns'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/base.rb:1271:in `columns'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/base.rb:1279:in `columns_hash'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/base.rb:1578:in `find_one'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/base.rb:1569:in `find_from_ids'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_reco
  rd/base.rb:616:in `find'
  c:/Rails_Projects/molex_app/config/routes.rb:15
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
  ller/routing/route_set.rb:226:in `draw'
  c:/Rails_Projects/molex_app/config/routes.rb:1
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:145:in `load_without_new_constant_marking'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:145:in `load'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:521:in `new_constants_in'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:145:in `load'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
  ller/routing/route_set.rb:286:in `load_routes!'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
  ller/routing/route_set.rb:286:in `each'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
  ller/routing/route_set.rb:286:in `load_routes!'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_contro
  ller/routing/route_set.rb:266:in `reload!'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:537
  :in `initialize_routing'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:188
  :in `process'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113
  :in `send'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113
  :in `run'
  c:/Rails_Projects/molex_app/config/environment.rb:9
  c:/RubyonRails/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `
  gem_original_require'
  c:/RubyonRails/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `
  require'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:156:in `require'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:521:in `new_constants_in'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_sup
  port/dependencies.rb:156:in `require'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/tasks/misc.rake:4
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `cal
  l'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `exe
  cute'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `eac
  h'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `exe
  cute'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in `inv
  oke_with_call_chain'
  c:/RubyonRails/Ruby187/lib/ruby/1.8/monitor.rb:242:in `synchronize'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in `inv
  oke_with_call_chain'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:588:in `inv
  oke_prerequisites'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:585:in `eac
  h'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:585:in `inv
  oke_prerequisites'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:577:in `inv
  oke_with_call_chain'
  c:/RubyonRails/Ruby187/lib/ruby/1.8/monitor.rb:242:in `synchronize'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in `inv
  oke_with_call_chain'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `inv
  oke'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2019:in `in
  voke_task'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `to
  p_level'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `ea
  ch'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `to
  p_level'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `st
  andard_exception_handling'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1991:in `to
  p_level'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1970:in `ru
  n'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `st
  andard_exception_handling'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1967:in `ru
  n'
  c:/RubyonRails/Ruby187/lib/ruby/gems/1.8/gems/rake-0.8.3/bin/rake:31
  c:/RubyonRails/Ruby187/bin/rake:19:in `load'
  c:/RubyonRails/Ruby187/bin/rake:19
  </code></pre>
  
  <p>My gems list looks like this:</p>
  
  <pre><code>$ gem list
  
  *** LOCAL GEMS ***
  
  actionmailer (2.3.5)
  actionpack (2.3.5)
  activerecord (2.3.5)
  activeresource (2.3.5)
  activesupport (2.3.5)
  faker (0.3.1)
  rack (1.0.1, 1.0.0)
  rails (2.3.5)
  rake (0.8.3)
  sqlite3-ruby (1.3.0 x86-mingw32)
  will_paginate (2.3.12)
  </code></pre>
  
  <p>My schema.rb file on the Windows box looks like this:</p>
  
  <pre><code># This file is auto-generated from the current state of the database. Instead of editing this file, 
  # please use the migrations feature of Active Record to incrementally modify your database, and
  # then regenerate this schema definition.
  #
  # Note that this schema.rb definition is the authoritative source for your database schema. If you need
  # to create the application database on another system, you should be using db:schema:load, not running
  # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
  # you'll amass, the slower it'll run and the greater likelihood for issues).
  #
  # It's strongly recommended to check this file into your version control system.
  
  ActiveRecord::Schema.define(:version =&gt; 20100915193510) do
  
    create_table "assets", :force =&gt; true do |t|
      t.integer  "project_id"
      t.datetime "created_at"
      t.datetime "updated_at"
      t.string   "image_file_name"
      t.string   "image_content_type"
      t.integer  "image_file_size"
      t.datetime "image_updated_at"
    end
  
    create_table "macroposts", :force =&gt; true do |t|
      t.text     "content"
      t.integer  "user_id"
      t.integer  "project_id"
      t.datetime "created_at"
      t.datetime "updated_at"
    end
  
    create_table "projects", :force =&gt; true do |t|
      t.string   "title"
      t.integer  "status",             :limit =&gt; 255
      t.integer  "program_manager_id"
      t.integer  "design_engineer_id"
      t.string   "sales_engineer"
      t.string   "customer"
      t.string   "market_size"
      t.string   "project_code"
      t.datetime "created_at"
      t.datetime "updated_at"
    end
  
    add_index "projects", ["design_engineer_id"], :name =&gt; "index_projects_on_design_engineer_id"
    add_index "projects", ["program_manager_id"], :name =&gt; "index_projects_on_program_manager_id"
  
    create_table "statuses", :force =&gt; true do |t|
      t.string   "status_name"
      t.integer  "status_code"
      t.datetime "created_at"
      t.datetime "updated_at"
    end
  
    create_table "users", :force =&gt; true do |t|
      t.string   "name"
      t.string   "email"
      t.datetime "created_at"
      t.datetime "updated_at"
      t.string   "encrypted_password"
      t.string   "salt"
      t.string   "remember_token"
      t.boolean  "admin",               :default =&gt; false
      t.string   "avatar_file_name"
      t.string   "avatar_content_type"
      t.integer  "avatar_file_size"
      t.datetime "avatar_updated_at"
    end
  
    add_index "users", ["email"], :name =&gt; "index_users_on_email", :unique =&gt; true
    add_index "users", ["remember_token"], :name =&gt; "index_users_on_remember_token"
  
  end
  </code></pre>
  
  <p>Since this is the first time I've run migrations on this machine, I would expect that nothing about the migration process should seek to access the 'projects' table before it's created. But I notice that the "projects" table isn't listed in schema.rb until after several tables that are associated with it (assets, macroposts.) Is that the source of the problem?</p>
  
  <p>Or is some sort of gem dependency issue at work here? I noticed that the 'faker' gem shows up towards the top of the error listing, even though I don't even really make use of it except in my tests (copied from Michael Hartl's RailsTutorial.org.)</p>
  
  <p>Thanks for any help or suggestions you can offer!</p>
  
  <p>Dean Richardson
  Genlighten.com</p>