Не удалось найти пользователей таблицы.

ОБНОВЛЕНИЕ 4

См. решение ниже!

** Обновление 3 **

Если кто-то на самом деле все еще читает это (я ценю это!), я сегодня борюсь с моим кодом (да все же нооб и в главе 11 рубинового руководства по рельсам).

Я предположительно reset вернулся к своему последнему фиксации:

$ cd rails_screencast/sample_app/
$ git reset --hard 2396c0d288d132ffc43c82d5cbbc736a5258eed2
HEAD is now at 2396c0d Micropost Validations

Когда я проверяю сайт на локальном хосте, он фактически показывает список пользователей, а не страницу ERROR, но когда я запускаю тестовый набор (автотест со spork - у меня есть reset те несколько раз тоже, чтобы быть уверенным) Я все еще получаю все ошибки, подобные приведенным ниже. Мне очень любопытно, что "Не удалось найти пользователей таблицы", как это происходит в КАЖДОЙ ошибке #

  108) Users signin success should sign a user in and out
     Failure/Error: user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/requests/users_spec.rb:56:in `block (4 levels) in <top (required)>'

Finished in 0.9872 seconds
108 examples, 108 failures

Время, чтобы продолжать подключаться и смотреть на все эти ошибки, если кто-нибудь может предложить какие-либо идеи или подсказки или идеи, что проверить, я был бы признателен! Или, если вам нужна дополнительная информация, я могу опубликовать это тоже (просто будьте очень конкретны в отношении того, какие файлы видеть, поскольку я не совсем свободно владею жаргоном, как многие уже есть)

Обновление 2:

Похоже, что мой reset что-то испортил с настройками factory, поскольку иногда все мои ошибки указывают на строку 5 моего файла micropost_spec.rb, а именно @@user = Factory (: user)... почти как мой файл заводов больше не связан ни с чем. Мне интересно, может ли rake db: migrate решить любую из моих проблем... или просто создать новые проблемы... У меня есть только данные образца, заполняемые faker

Любые идеи?

Можно ли вернуть мою файловую систему к предыдущему фиксации и начать все заново?... когда я был зеленым

Failures:

  1) Micropost should create a new instance with valid attributes
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:5:in `block (2 levels) in <top (required)>'

  2) Micropost user associations should have a user attribute
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:5:in `block (2 levels) in <top (required)>'

  3) Micropost user associations should have the right associated user
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:5:in `block (2 levels) in <top (required)>'

  4) Micropost validations should have a user id
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:5:in `block (2 levels) in <top (required)>'

  5) Micropost validations should require nonblank content
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:5:in `block (2 levels) in <top (required)>'

  6) Micropost validations should reject long content
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:5:in `block (2 levels) in <top (required)>'

Обновление 1:

Я получаю ошибки от 4 до 6 до 111 всех с повторяющейся темой

 1) Micropost should create a new instance with valid attributes
     Failure/Error: @user = Factory(:user)
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/micropost_spec.rb:53:in `block (2 levels) in <top (required)>'

В частности, "Не удалось найти пользователей таблицы" "- я скопировал код из учебника git для файла micropost_spec.rb, но, похоже, не исправил его - возможно, кто-то может помочь мне направить таблицу ссылается на?

//////////////////////////////////////ORIGINAL BELOW////////////////////////////////

Я работаю в уроке 11 учебного курса Ruby on Rails и пытаюсь заполнить свой db, чтобы показать микропосты

когда я выполнил команду rake db: populate, он дал мне следующее:

    macbook:sample_app macbook$ rake db:populate
(in /Users/macbook/rails_screencast/sample_app)
db/test.sqlite3 already exists
db/test.sqlite3 already exists
db/development.sqlite3 already exists
-- create_table("microposts", {:force=>true})
   -> 0.0090s
-- add_index("microposts", ["user_id"], {:name=>"index_microposts_on_user_id"})
   -> 0.0074s
-- create_table("users", {:force=>true})
   -> 0.0243s
-- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true})
   -> 0.0094s
-- initialize_schema_migrations_table()
   -> 0.0167s
-- assume_migrated_upto_version(20110614132314, "db/migrate")
   -> 0.0432s
rake aborted!
Validation failed: Email is invalid

Я запускал его пару раз и продолжал получать ту же ошибку... когда я посетил сайт в браузере, это было похоже на то, что ни один из моих примерных пользователей не был там...

require 'faker'


namespace :db do 
  desc "Fill database with sample data"
  task :populate => :environment do
    Rake::Task['db:reset'].invoke
    admin = User.create!(:name => "Foo Bar",
                         :email => "[email protected]",
                         :password => "foobar",
                         :password_confirmation => "foobar")
   admin.toggle!(:admin)
    99.times do |n|
      name = Faker::Name.name
      email = "example-#{n+1}@railstutorial.org"
      password = "password"
      User.create!(:name => name,
                   :email => email,
                   :password => password,
                   :password_confirmation => password)
    end

    User.all(:limit => 6).each do |user|
      50.times do
        user.microposts.create!(:content => Faker::Lorem.sentence(5))
      end
    end
  end
end

тогда я решил, о, может быть, rake db: reset очистит мою базу данных примеров, и я снова смогу заполнить новую информацию... плохое предположение

В моем тестовом наборе теперь отображается:

Finished in 0.99915 seconds
111 examples, 111 failures

Теперь, прежде чем я начну использовать больше вещей, я ищу совет, куда идти дальше...

Ответ 1

Майкл (автор railstutorial.org) ответил на мой запрос по электронной почте!

Если вам не хватает таблицы при запуске набора тестов, это, вероятно, показатель того, что вам нужно запустить:

rake db:test:prepare

YUP!! YAYYYY

Finished in 4.82 seconds
108 examples, 0 failures

ВРЕМЯ ТОРТА!

Ответ 2

db:populate, который вы показываете, делает сам db:reset, поэтому его выполнение вручную не могло вызвать каких-либо проблем, которые еще не происходили с db:populate.

Вы можете просто удалить файлы db/*.sqlite3 и начать с нового. В этом коде db:populate ничего не видно, что объясняет, почему проверка электронной почты не удалась, вам нужно показать модель User и проверки, которые у вас есть, чтобы мы могли диагностировать эту первоначальную проблему.