Plugin partagé avec Capistrano

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.

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 B.

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_

2008/7/30 Jean-François Trân [email protected]:

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 M.

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