Basierend auf this article, die beschreibt, wie Sie kleine SQL-Manifest-Dateien mit Ritzeln zu schreiben verwenden, habe ich meine SQL-Ansichten und Funktionen automatisch neu erstellt auf jedem rake db:migrate
. Dies funktionierte wunderbar bis zum letzten Upgrade auf Rails 5.1Ritzel erfordert keine SQL-Dateien für benutzerdefinierte Rake-Aufgabe
Plötzlich die Manifest-Dateien kompiliert werden, jedoch jede einzelne -Anweisung wird ignoriert, und ich am Ende mit einer leeren Manifest-Datei. Ich habe verschiedene Kommentarstile für die DirectiveProcessor
mit und ohne Dateierweiterungen mit und ohne relative Pfade ausprobiert. Egal, was ich anbiete, am Ende habe ich eine leere Datei, die über die DB ausgeführt wird.
mein Setup
db/Funktionen/application.sql
/*
* This is a manifest file that'll be compiled into application.sql, which will include all the files
* from db/functions listed below.
*
*= require kill_all_connections.sql
*= require invalidate_emails.sql
*
*= require days_until_birthday.sql
*/
lib/Aufgaben/db_functions.rake
namespace :db do
desc 'creates DB functions listed in db/functions.sql'
task :functions => :environment do
sprocket_env = Sprockets::Environment.new do |env|
env.register_mime_type('text/sql', '.sql')
env.register_processor('text/sql', Sprockets::DirectiveProcessor)
env.append_path 'db/functions'
end
ActiveRecord::Base.connection.execute(sprocket_env['application.sql'].to_s)
end
end
mein Ergebnis
betrachten das Konsole, wenn ich rails db:functions
ausführen, sehe ich folgendes:
(69.2ms) /*
* This is a manifest file that'll be compiled into application.sql, which will include all the files
* from db/functions listed below.
*
*
*/
So ist die Datei ausgeführt, sieht aber leer ... Wer noch Ideen hat?
Die ursprüngliche Idee war nicht komm von mir. Ich versuche es einfach zu beheben. Es mag ein wenig Overikill sein, ja, aber das Umschreiben der gesamten aktuellen Funktionalität - es gibt mehr als nur diese beiden Fälle - ist in dieser Phase auch ein Overkill ... Aber danke für Ihre unterschiedliche Herangehensweise, das hilft sicherlich. – Vapire
Ich denke, wenn Sie wirklich einen komplexen Abhängigkeitsbaum benötigen, wo Sie ein Manifest auf den Subdateien haben, könnte es Sinn machen. Auf der anderen Seite ist Kettenräder nicht einmal gut in Abhängigkeit Auflösung und erfordert nur die anderen Dateien wiederholt. – max