UPDATE 4
Voir la solution ci-dessous !
**Mise à jour 3 **
Si quelqu'un lit encore ce message (j'apprécie !), je me suis débattu avec mon code aujourd'hui (oui, je suis toujours un noob et je suis au chapitre 11 du tutoriel ruby on rails).
J'ai soi-disant réinitialisé à ma dernière livraison :
$ cd rails_screencast/sample_app/
$ git reset --hard 2396c0d288d132ffc43c82d5cbbc736a5258eed2
HEAD is now at 2396c0d Micropost Validations
Lorsque je vérifie le site sur l'hôte local, il affiche effectivement une liste d'utilisateurs et non une page d'erreur, mais lorsque je lance la suite de tests (autotest avec spork - j'ai réinitialisé ces derniers plusieurs fois pour être sûr), j'obtiens toujours toutes les erreurs telles que celles présentées ci-dessous. Je suis très curieux au sujet de "Could not find table 'users'" car il est dans CHAQUE erreur #.
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
Il est temps de continuer à travailler et à chercher toutes ces erreurs, si quelqu'un peut offrir un aperçu ou des conseils ou des idées sur ce qu'il faut vérifier, je l'apprécierais ! Ou si vous avez besoin d'informations supplémentaires, je peux les poster aussi (il suffit d'être très spécifique sur les fichiers à voir car je ne suis pas totalement à l'aise dans le jargon comme beaucoup le sont déjà).
Mise à jour 2 :
Il semble que ma réinitialisation ait dérangé quelque chose avec les paramètres d'usine car parfois toutes mes erreurs pointent vers la ligne 5 de mon fichier micropost_spec.rb spécifiquement @ la ligne @user = Factory(:user)... presque comme si mon fichier d'usine n'était plus lié à rien. Je me demande si un rake db:migrate pourrait résoudre mes problèmes... ou juste créer de nouveaux problèmes... Je n'ai que des données d'exemple à remplir avec faker
Des idées ?
Est-il possible de rétablir mon système de fichiers à un commit précédent et de recommencer ? ... quand j'étais vert
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)>'
Mise à jour 1 :
Je reçois des erreurs de 4 à 6 à 111, toutes avec un thème récurrent 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)>'
Plus précisément, le message "Could not find table 'users'" - J'ai copié le code du tutoriel git pour le fichier micropost_spec.rb mais cela ne semble pas résoudre le problème - peut-être que quelqu'un peut m'aider à trouver à quoi la table fait référence ?
////////////////////////////////////// ORIGINAL CI-DESSOUS ////////////////////////////////
Je travaille sur la leçon 11 du Ruby on Rails Tutorial et j'essaie d'alimenter ma base de données pour afficher les microposts.
lorsque j'ai exécuté la commande rake db:populate, j'ai obtenu le résultat suivant :
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
Je l'ai lancé plusieurs fois et j'ai eu la même erreur... quand j'ai visité le site sur un navigateur, c'était comme si aucun des utilisateurs de mon échantillon n'était là...
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 => "foo@bar.com",
: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
puis j'ai décidé que peut-être rake db:reset purgerait ma base de données d'échantillon et que je pourrais relancer le populate avec des données fraîches... mauvaise supposition
ma suite de test montre maintenant :
Finished in 0.99915 seconds
111 examples, 111 failures
Avant d'en rajouter, j'aimerais avoir des conseils sur la marche à suivre...