2017-10-27 1 views
0

So habe ich diese Triggerprozedur in meinem structure.sql:Trigger-Verfahren zeigt, die nicht oben in der Staging/Produktion

CREATE FUNCTION dead_filter() RETURNS TRIGGER AS $dead_filter$ 
    BEGIN 
     IF (NEW.all_votes > 6 AND NEW.non_skip_votes/NEW.all_votes::float < 0.56) THEN 
      NEW.dead := true; 
      RETURN NEW; 
     END IF; 

    RETURN NEW; 
END; 
$dead_filter$ LANGUAGE plpgsql; 

CREATE TRIGGER dead_filter AFTER UPDATE ON statements 
FOR EACH ROW 
EXECUTE PROCEDURE dead_filter(); 

Und es funktioniert lokal ganz gut, aber aus irgendeinem Grund es ist in meiner Inszenierung zeigt und Produktionsserver!

Beide leben auf einer Heroku App, und beide haben

config.active_record.schema_format = :sql 

in ihren jeweiligen Konfigurationsdateien. Was fehlt mir hier?

enthält nicht meinen Auslöser für Staging/Produktion, sondern lokal, auf Entwicklung.

Gibt es etwas, das ich ausführen muss, um die Struktur.sql-Datei erneut lesen zu lassen? Backend ist definitiv meine Schwachstelle, also wenn es etwas sehr Offensichtliches gibt, hätte ich wissen müssen ... Chancen sind, dass ich es nicht wusste!

Danke!

+0

Dies kann eine dumme Frage sein, aber haben Sie Migrationen in Ihrer Produktionsdatenbank ausgeführt, die diesen Trigger tatsächlich hinzufügt? –

+0

Dumme Fragen sind die, nach denen ich suche! Es stellte sich heraus, dass meine Ignoranz durchschimmerte - ich hatte den Eindruck, dass ich einfach meine Struktur (die mit Localhost funktionierte) den Auslöser hinzufügen konnte und es würde einfach automatisch auf Staging und Prod ... funktionieren Fall! Ich habe eine Migration hinzugefügt und kann sie nun in pg_trigger von staging sehen. Wenn Sie Ihren Kommentar zu einer Antwort machen möchten, würde ich mich freuen, sie zu akzeptieren! –

Antwort

1

Wie in einem Kommentar müssen Sie eine Migration erstellen, die einen Trigger hinzufügt und diese Migration für die Produktion ausführt, da sie auf Heroku nicht automatisch erfolgt. Beachten Sie außerdem, dass die Datei structure.sql nach dem Ausführen von Migrationen lokal oder Aufgabe wie rake db:schema:dump erneut generiert wird. Sie sollten diese Datei also nicht manuell bearbeiten.

+0

Lernen Sie jeden Tag etwas Neues! Vielen Dank! –

+0

Auf der falschen Seite hebst du das auf, Michal - ich habe jetzt meinen Auslöser beim Staging, und es erscheint in pg_trigger, aber ich habe immer noch keinen Erfolg damit, tatsächlich zu feuern, ob ich den Tisch manuell AKTUALISIERE oder meine App nutze um die passende Anzahl von Einträgen zu erstellen ... Gedanken? –

Verwandte Themen