Basé sur this article, qui décrit comment utiliser Sprockets pour écrire de petits fichiers manifest SQL, mes vues et fonctions SQL sont automatiquement recréées sur chaque rake db:migrate
. Cela a fonctionné merveilleusement jusqu'à la dernière mise à niveau vers Rails 5.1Pignons ne nécessite pas de fichiers SQL pour la tâche de rake personnalisée
Soudain, les fichiers manifestes sont compilés, cependant chaque instruction *= require
est ignorée et je me retrouve avec un fichier manifeste vide. J'ai essayé plusieurs styles de commentaire pour le DirectiveProcessor
, avec et sans extensions de fichier, avec et sans chemins relatifs. Peu importe ce que je fournis, je me retrouve avec un fichier vide qui est exécuté via la base de données.
ma configuration
db/fonctions/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/tâches/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
mon résultat
regardant la console quand j'exécute rails db:functions
, je vois ce qui suit:
(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.
*
*
*/
Ainsi, le fichier est exécuté, mais semble vide ... quelqu'un a des idées?
L'idée originale n'a pas viens de moi. J'essaie simplement de le réparer. C'est peut-être un peu exagéré, oui, mais réécrire toute la fonctionnalité actuelle - il y a plus que ces deux cas - est aussi un peu exagéré à ce stade ... Mais merci pour votre approche différente, cela aide certainement. – Vapire
Je suppose que si vous aviez vraiment besoin d'une arborescence de dépendances complexe où vous avez un manifeste sur les sous-fichiers, cela pourrait avoir du sens. Mais d'un autre côté, les pignons ne sont même pas bons en résolution de dépendance et nécessiteront simplement les autres fichiers à plusieurs reprises. – max