Bonjour, J'ai un petit souci avec un plugin lors du deploiement d'une appli avec Capistrano. Mon projet est géré par Subversion, le déploiement avec Capistrano ne pose pas de probleme, sauf que j'ai un plugin qui n'est pas géré (volontairement) par SVN. Du coup en prod mon appli plante parce qu'elle requiert ce plugin a certains endroits. Ou puis-je mettre ce plugin sur le serveur de prod dans l'arborescence prevue par Capistrano pour que ce plugin soit accessible a toutes mes releases? J'ai essayé de créer un repertoire shared/vendor/plugins mais ca ne fonctionne pas. Une solution? (recherche Google infructueuse) merci Thomas B.
on 30.07.2008 16:29
on 30.07.2008 16:35
A ta place je demanderais à Capistrano de faire un lien symbolique vers le répertoire de ton plugin dans le répertoire vendor/plugin quand tu déploies ton projet. Maintenant, je ne connais pas Capistrano, et je m'en passe pour déployer mon projet en cours ; par contre je fais ça pour garder certains répertoires intacts lorsque la nouvelle version écrase l'ancienne. -- Michel Belleville
on 30.07.2008 17:38
Le 30 juillet 2008 16:29, Thomas a écrit : > Ou puis-je mettre ce plugin sur le serveur de prod dans l'arborescence > prevue par Capistrano pour que ce plugin soit accessible a toutes mes > releases? J'ai essayé de créer un repertoire shared/vendor/plugins > mais ca ne fonctionne pas. Tu rajoutes le chemin à plugin_paths. Dans config/environment.rb : Rails::Initializer.run do |config| # ... config.plugin_paths << mon_repertoire # ... end normalement. -- Jean-François. -- http://twitter.com/underflow_
on 30.07.2008 17:55
2008/7/30 Jean-François Trân <jftran@rubyfrance.org>: > Dans config/environment.rb : > > Rails::Initializer.run do |config| > # ... > config.plugin_paths << mon_repertoire > # ... > end > > normalement. > Une autre solution, c'est de faire comme avec les fichiers database.yml et compagnie. Il suffit de mettre le plugin dans le dossier /shared/. Ensuite soit, tu fais une copie du dossier dans ton dossier release pour ainsi avoir un versionning de ton plugin par déployement ou alors tu fais un lien. -- Cyril Mougel http://blog.shingara.fr
on 30.07.2008 23:07
> > Tu rajoutes le chemin à plugin_paths. > dossier /shared/. Ensuite soit, tu fais une copie du dossier dans ton > dossier release pour ainsi avoir un versionning de ton plugin par > déployement ou alors tu fais un lien. Je voudrais pas jouer mon vieux con mais la tendance actuelle et qui ne fera que s'affirmer IMHO c'est plutôt de gemifier de genre de truc. Même si toutes ces approches sont finalement équivalentes au jour J, pour les gens qui passent derrière c'est quand même plus sympa et à l'usage c'est plus souple. Sans compter que la notion de partage de code est toujours sujette au principe de réalité (coupler le déploiement de 2 applis en cas d'update du plugin n'est pas souhaitable). Dans les faits il est nettement plus réaliste d'utiliser un gem de référence et de le frozen dans le repo de chaque app. Plus réaliste que toutes les approches Piston like, copy de folder et compagnie. Ainsi tu as le partage, le découplage par appli, la mise à jour automatique à partir de rails2.1, la possibilité d'avoir plusieurs version différente en même temps sans se salir les mains avec les répertoires, la gestion des compatibilité de version et une standardisation qui n'a pas besoin d'explication pour les futurs mainteneurs. My 2 cents