Forum: Rails France Problème en surchargeant une méthode

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Aa68311f677f3b12d79f84bd12456827?d=identicon&s=25 olfhen (Guest)
on 2008-11-21 15:55
(Received via mailing list)
Bonjour,

je débute sous rails et je viens de commencer un projet avec
PostgreSQL et des tables avec foreign key. Lorsque j'essaye de peupler
mes tables avec rake db:fixtures:load, j'obtiens l'erreur suivante :

PGError: ERROR:  permission denied: "RI_ConstraintTrigger_33306" is a
system trigger

Quelques recherches sur Google m'ont amenée vers
http://dev.rubyonrails.org/ticket/9981
et http://kopongo.com/2008/7/25/postgres-ri_constrain... .
Le problème viendrait du fait que lors de l'insertion massive de
données, rails supprime les triggers pour les remettre ensuite, afin
de ne pas générer d'éventuels problèmes d'intégrité référentielle. Or
l'utilisateur SQL qui execute les requêtes n'a pas le droit de
supprimer certains triggers. Les 2 sites proposent de modifier la
méthode disable_referential_integrity de PostgreSQLAdapter ainsi :

module ActiveRecord
   module ConnectionAdapters
      class PostgreSQLAdapter < AbstractAdapter
         def disable_referential_integrity(&block)
            transaction {
               begin
                  execute "SET CONSTRAINTS ALL DEFERRED"
                  yield
               ensure
                  execute "SET CONSTRAINTS ALL IMMEDIATE"
               end
            }
         end
      end
   end
end

et de rajouter dans le fichier environment.rb la ligne : require
'mon_fichier.rb'. J'ai mis ce fichier dans le répertoire lib/. Quand
je ré-exécute rake db:fixtures:load, j'ai l'erreur suivante :

uninitialized constant
ActiveRecord::ConnectionAdapters::AbstractAdapter

Je dois avouer que je ne sais pas du tout par où prendre ce nouveau
problème... (je n'ai pas une grosse expérience en ruby non plus !)
Quequu'un pourrait-il m'aider ?

Merci !
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2008-11-21 16:12
(Received via mailing list)
olfhen wrote:
> et de rajouter dans le fichier environment.rb la ligne : require
> 'mon_fichier.rb'. J'ai mis ce fichier dans le répertoire lib/. Quand
> je ré-exécute rake db:fixtures:load, j'ai l'erreur suivante :
>
Par curiosité, tu as mis le require à la fin ou au début de ton fichier
environnement.rb. Car si tu le met au début. il n'y aura pas eu de load
de Rails :)

--
Cyril Mougel
http://blog.shingara.fr
Aa68311f677f3b12d79f84bd12456827?d=identicon&s=25 olfhen (Guest)
on 2008-11-21 16:25
(Received via mailing list)
On 21 nov, 16:11, Cyril Mougel <cyril.mou...@gmail.com> wrote:
> olfhen wrote:
> > et de rajouter dans le fichier environment.rb la ligne : require
> > 'mon_fichier.rb'. J'ai mis ce fichier dans le répertoire lib/. Quand
> > je ré-exécute rake db:fixtures:load, j'ai l'erreur suivante :
>
> Par curiosité, tu as mis le require à la fin ou au début de ton fichier
> environnement.rb. Car si tu le met au début. il n'y aura pas eu de load
> de Rails :)

Je l'ai mis tout à la fin.
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2008-11-22 07:52
(Received via mailing list)
Le 21 novembre 2008 15:55, olfhen a écrit :

[monkey patch code]
> et de rajouter dans le fichier environment.rb la ligne : require
> 'mon_fichier.rb'. J'ai mis ce fichier dans le répertoire lib/. Quand
> je ré-exécute rake db:fixtures:load, j'ai l'erreur suivante :
>
> uninitialized constant
> ActiveRecord::ConnectionAdapters::AbstractAdapter

Enlève le require à la fin de ton environment.rb et déplace ton
fichier (qui contient le monkey patch) de lib/ vers config/initializers.
Relance.

Si ça ne marche pas, supposons que tu aies un modèle Foo
rajoute au début du fichier contenant lemonkey patch : Foo

    -- Jean-François.

--
Rails Party à Paris dimanche 30 novembre !

http://twitter.com/underflow_
Aa68311f677f3b12d79f84bd12456827?d=identicon&s=25 olfhen (Guest)
on 2008-11-24 09:26
(Received via mailing list)
Bonjour,

On 22 nov, 07:52, "Jean-François Trân" <jft...@rubyfrance.org> wrote:
>
> Enlève le require à la fin de ton environment.rb et déplace ton
> fichier (qui contient le monkey patch) de lib/ vers config/initializers.
> Relance.

Impeccable. Ca a marché. Merci.

Encore une chtite question : pourquoi est-ce que ça ne marchait pas de
la façon dont s'était indiqué dans la page web que j'avais vu ?
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2008-11-24 17:28
(Received via mailing list)
Le 24 novembre 2008 09:25, olfhen a écrit :

>> Enlève le require à la fin de ton environment.rb et déplace ton
>> fichier (qui contient le monkey patch) de lib/ vers config/initializers.
>> Relance.
>
> Impeccable. Ca a marché. Merci.
>
> Encore une chtite question : pourquoi est-ce que ça ne marchait
> pas de la façon dont s'était indiqué dans la page web que j'avais vu ?

Ce n'est pas très clair pour moi non plus, j'investiguerai un peu
plus à l'occasion, en même temps j'ai envie de dire que c'est
un peu le principe des tutoriels, c'est le syndrôme "chez moi
çamarche".

   -- Jean-François.

--
Rails Party à Paris dimanche 30 novembre !
Infos: http://rubyfrance.org/evenements/rails-party-2008/
Inscriptions: http://railsparty.ror.bearstech.com

http://twitter.com/underflow_
This topic is locked and can not be replied to.