2011-06-14 23 views
32

ACTUALIZACIÓN 4No se pudo encontrar la tabla 'usuarios'

Ver solución de abajo!

** ** Actualización 3

Si alguien está realmente todavía leyendo esto (lo aprecio!) He estado luchando alrededor de mi código de hoy (sí todavía un novato y en el capítulo 11 del rubí en los carriles tutorial).

supuestamente Hemos restablecido de nuevo a mi última confirmación:

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

Cuando compruebo el sitio en el host local que en realidad muestra una lista de los usuarios y no una página de error, pero cuando corro el conjunto de pruebas (autotest con spork, también lo reinicié un par de veces para estar seguro) Aún recibo todos los errores como los que se muestran a continuación. Estoy muy curiosa acerca de la "mesa no se pudo encontrar 'usuarios'" como lo es en todos los errores #

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 

tiempo para seguir enchufando y mirando a todos estos errores, si alguien puede ofrecer alguna idea o indirectas o ideas qué revisar, ¡lo agradecería! O si necesita información adicional que pueda Post que también (acaba de ser muy específico para los archivos que desea ver ya que no estoy totalmente fluido en la jerga como muchos ya lo son)

Actualización 2:

Se parece que mi reinicio dañó algo con la configuración de fábrica ya que a veces todos mis errores apuntan a la línea 5 de mi archivo micropost_spec.rb específicamente @ the @user = Factory (: user) línea ... casi como si mi archivo de fábricas no fuera vinculado a cualquier cosa más. Me pregunto si un rake db: migrate resolvería alguno de mis problemas ... o simplemente crearía nuevos problemas ... Solo tengo datos de muestra rellenando con faker

¿Alguna idea?

¿Es posible revertir mi sistema de archivos a una confirmación anterior y comenzar de nuevo? ... cuando era verde

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)>' 

Actualización 1:

estoy recibiendo errores se 4 a 6 para 111 todos con un tema recurrente de

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)>' 

En concreto, el " No se pudieron encontrar los "usuarios" de la tabla: copié el código del tutorial git para el archivo micropost_spec.rb pero no pareció solucionarlo; ¿quizás alguien puede ayudarme a saber a qué se refiere la tabla?

////////////////////////////////////// ORIGINAL A CONTINUACIÓN ////// //////////////////////////

Estoy trabajando en el Ruby on Rails Tutorial lección 11 y estoy tratando de poblar mi db para mostrar los microposts

cuando hice el rake db: poblar comando que me dio el siguiente:

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 

me encontré con un par de veces y cuidado para conseguir el mismo error ... cuando visité el sitio en una navegador, era como si ninguno de mis usuarios de muestra estuviese allí ...

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 

entonces decidí oh tal vez rake db: RESET, se purgar mi base de datos de la muestra y que puede ejecutar el poblar de nuevo con cosas frescas ... supuesto mal

mi banco de pruebas muestra ahora:

Finished in 0.99915 seconds 
111 examples, 111 failures 

Ahora, antes de meterse más cosas para arriba yo soy en busca de un consejo dónde ir después ...

+0

posible duplicado de [error RSpec: no se pudo encontrar la tabla después de la migración ...?] (Http://stackoverflow.com/questions/5264355/rspec-failure-could-not-find-table-after-migration) – l0b0

Respuesta

3

El db:populate que está mostrando hace un db:reset en sí mismo, por lo que hacerlo manualmente no puede haber causado ningún problema que ya no estaba ocurriendo con el db:populate.

Puede simplemente eliminar sus archivos db/*.sqlite3 y comenzar desde cero. No hay nada obvio en ese código db:populate que explicaría por qué falló la validación del correo electrónico, tendría que mostrar el modelo User y las validaciones que tiene para diagnosticar ese problema inicial.

+1

La respuesta aceptada de 'rake db: test: prepare' no funcionó para mí sin antes eliminar los archivos db. ¡Gracias! – stefano

117

Michael (autor de railstutorial.org) respondió a mi solicitud por correo electrónico.

Si falta una mesa cuando se ejecuta el conjunto de pruebas, es probable que sea una indicación de que es necesario ejecutar:

rake db:test:prepare 

YUP !! YAYYYY

Finished in 4.82 seconds 
108 examples, 0 failures 

CAKE TIME!

+5

Usted señor, es una leyenda. He estado batallando por unas horas. He estado probando algunos parches de monos y nada ha funcionado. Todavía soy un n00b completo y me ha estado matando. Si pudiera votar esto 100 veces, lo haría. Gracias – StevenMcD

+0

Lo mismo aquí, simplemente avanzando a través del tutorial Rails y se quedó atascado en el mismo lugar. ¡Gracias! ¡Y gracias a Michael! – kburns

+0

gracias, amigo, rock, –

Cuestiones relacionadas