Pour une fois, Ruby On Rails (RoR) était resté très laconique dans son message d’erreur :
1 2 3 4 | [lipton]$ RAILS_ENV=production rake db:migrate VERSION=10 rake aborted! uninitialized constant NewEmail |
Pourtant mon fichier de migration en version 10 (010_new_email.rb) est tout ce qu’il y a de plus simple (ajout de 2 colonnes à une table) :
1 2 3 4 5 6 7 8 9 10 11 | class NewEmailAddress < ActiveRecord::Migration def self.up add_column :users, :new_email, :string add_column :users, :email_activation_code, :string, :limit => 40 end def self.down remove_column :users, :email_activation_code remove_column :users, :new_email end end |
Après plus d’une heure de recherche (et des solutions assez farfelues), enfin la délivrance :
1 | [lipton]$ mv 010_new_email.rb 010_new_email_address.rb |
N’oubliez jamais cette règle pour vos migrations rails : le fichier XXX_nom_de_la_classe.rb doit contenir une classe NomDeLaClasse qui hérite de ActiveRecord::Migration !
1 2 3 4 5 6 7 8 9 | [lipton]$ RAILS_ENV=production rake migrate VERSION=10 /usr/bin/rake:17:Warning: require_gem is obsolete. Use gem instead. (in /home/.noodge/osilink/osilink) == NewEmailAddress: migrating ================================================= -- add_column(:users, :new_email, :string) -> 2.1367s -- add_column(:users, :email_activation_code, :string, {:limit=>40}) -> 1.6490s == NewEmailAddress: migrated (3.7860s) ======================================== |
Tout va mieux ! Et le développement d’Osilink continue…


