5 votes

Remplacement des ressources de backend en environnement de production

Je travaille sur un projet qui a besoin de modifier un peu le comportement de WYMEditor Refinery. Cela se fait facilement en remplaçant jquery.refinery.wymeditor.js en utilisant rake refinery:override et en l'éditant selon mes besoins, ce qui fonctionne bien en environnement de développement.

Cependant, en production, les remplacements sont ignorés. En d'autres termes, l'asset compilé contient simplement jquery.refinery.wymeditor.js du bundle, et modifier ce fichier directement peut donner l'effet désiré, mais ce n'est pas la bonne manière de le faire.

Le problème semble se manifester uniquement lorsqu'on essaie de remplacer les assets liés à l'interface d'administration.

Il pourrait être utile de savoir que j'utilise refinery-edge.

Toute aide est appréciée.

3voto

unclenorton Points 1271

Donc j'ai réussi à le battre. La première chose à mentionner est que cela n'aurait pas été possible sans avoir fouillé dans le code source de Refinery.

Comme je l'ai déjà écrit dans le commentaire, le problème était que j'essayais de remplacer un asset (wymeditor/jquery.refinery.wymeditor.js dans mon cas) qui n'était pas inclus dans une vue directement, mais était référencé dans un autre asset, qui était pris à partir du gem. Et comme sprockets ne sait rien des remplacements de Refinery, il prenait les assets référencés par le chemin relatif, c'est-à-dire à partir du gem (et donc non modifié), aussi. Ainsi, encore une fois, dans mon cas, la solution a été de remplacer le refinery/wymeditor.js, et tout a fonctionné comme par magie.

Si vous avez besoin de modifier un autre script backend que WYMEditor, vous devrez probablement remplacer le refinery/refinery.js, qui inclut tous les autres scripts backend, en plus du script même que vous devez modifier.

Cependant, il y a une grande préoccupation. Avec tous ces remplacements, j'ai rendu toutes les mises à jour très sujettes aux erreurs, car certains fichiers se mettront à jour, et d'autres pas. Cela aurait pu être évité en remplaçant tout, mais cela signifie en effet aucune mise à jour du tout.

0voto

Richard Hulse Points 7610

Essayez de changer le nom du fichier généré et de l'inclure dans votre manifeste au lieu du nom d'origine. Je soupçonne qu'il préfère l'original en présence de deux ressources portant le même nom.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X