Certains de mes projets, utilisent des bases de données comportant de nombreuses tables. Certaines de ces tables contiennent des statistiques. Elles requièrent donc l’usage de clés primaires composites.
Or, jusqu’à présent le framework de Rails ne permet pas l’usage de telles clés.
Fort heureusement, et comme lors de problèmes rencontrés avec Rails, il existe un gem pour palier à cette lacune : composite_primary_keys
Dans mon environnement de développement, aucun problème particulier à signaler. Logiquement, je me décide de migrer mon projet sur un serveur de tests a l’aide de SVN.
Une fois l’application transférée sur le serveur, je relance Rails.
sudo mongrel_rails cluster::restart
Et paf ! Voilà l’erreur fatale qui survient :
/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/base.rb:1833:in method_missing_without_paginate'': undefined method ''set_primary_keys'' for #
Je commence par comparer la liste des gems installés côté serveur de développement et côté serveur de test.
gem list
Identique sur les deux serveurs, l’erreur est donc ailleurs.
Je découvre alors que la commande de chargement de composite_primary_keys est située à la fin de environnement.rb.
`require ''composite_primary_keys`
Je tente de la déplacer et de la mettre sur la première ligne et pouf ! L’erreur disparait !
Mon fichier environnement.rb fonctionnel finit donc par ressembler à :
require 'composite_primary_keys'
require File.join(File.dirname(__FILE__), 'boot')
Rails::Initializer.run do |config|
...
end
require 'lib/date_overrides'
require 'lib/common'
require 'digest/sha1'

