Ouverture de session

Commentaires récents

Syndication
Flux XML

Communiquer plusieurs applications rails

Communiquer plusieurs applications rails
Posté par iUser59 le Mercredi, 2 Juillet, 2008 - 9:09am. Développement

Bonjour @ tous,

je voudrais avoir une application "Master" qui utiliserait une BD avec ses propres tables. Cette application utiliserait ses models, ses views, ses controllers propres.
Dans la même arborescence, je voudrais avoir n-applications "Slave" qui utiliseraient la même BD. Chaque "Slave" créerait n-tables (comme par exemple, une table UserSlave1 qui regrouperait tous les utilisateurs de l'application Slave1 sachant que tous les utilisateurs de toutes les applications seront créés dans la table User de l'application Master)

Pouvez-vous me dire si cela est réalisable en RoR.

D'avance merci



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
j'ai trouvé ça. N'y a t-il
Auteur: 
iUser59
Date: 
Mer, 02/07/2008 - 09:16

j'ai trouvé ça. N'y a t-il pas plus simple? http://blog.8thlight.com/articles/2007/02/21/sharing-a-database-among-multiple-rails-applications


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
master/slave
Auteur: 
jasperiel
Date: 
Mer, 02/07/2008 - 10:33

Ne serait-il pas plus simple d'ajouter un champ ou une table de jointure qui listerait les accès de tel et tel user à chaque sous-appli ?

À copier tes données, tu optimises peut-être un peu (early optimization is the root of all evil !) mais tu t'obliges à faire double requête (certainement bien pire en perf !) dans tes tables, avoir de l'info dupliquée, créer des doublons ou avoir des informations qui ne sont plus synchronisées entre les applis esclaves...

Bref, je ne connais pas ton problème mais du peu que tu dis, je pense qu'un vrai système d'accès et une seule vraie appli te permettront de faire du code plus propre, plus maintenable, moins gourmand, et plus performant.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Je vais t'expliquer
Auteur: 
iUser59
Date: 
Mer, 02/07/2008 - 10:57

Je vais t'expliquer autrement.
Je voudrais avoir une appli Master qui liste des images par exemple avec des liaisons vers d'autres tables ...
Je voudrais avoir plusieurs applications Slave que je voudrais personnaliser niveau esthétique car elles correspondent à une autre marque par exemple.
Donc dans une appli Slave1, je veux créer une table UserSlave1 (pardon qui n'est pas synchronisée avec l'appli master, elle dépend juste de l'appli Slave1) et j'aurais par exemple une table PicturesSlave1 qui contiendrait les ID des Images de la table Pictures de l'application Master et ainsi par là, pouvoir accéder aux jointures avec les autres tables définies dans l'appli Master.

Il ne faut pas oublier que ma table Pictures de l'appli master ne contient que des liens vers le dossier public/images/ dans l'appli master

J'espère avoir été assez clair

Merci de m'éclairer si ce n'est pas clair où si je m'égare


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Je pense que je suis sur le
Auteur: 
iUser59
Date: 
Mer, 02/07/2008 - 14:43

Je pense que je suis sur le point de trouver.

Je pense que je vais faire une application "Master" (/projects/master/...(app, public, ...) ) dans laquelle j'aurais tous les models dont j'aurais besoin pour faire ce que je dois faire dans la base. Dans le répertoire 'public' j'ai un répertoire 'images' qui contient toutes mes images. Dans ma base de données, on trouve un lien vers ce répertoire pour obtenir l'image.

Ensuite, je vais faire dans le même répertoire (/projects/webSite1/...) une deuxième application avec tout mon squelette et mes models et controllers dont j'ai besoin pour pouvoir me connecter directement aux autres tables de la bases et faire ce que j'ai a faire dedans. Je créerai une table 'imagesWebSite1' qui contiendra les ID des images de la table principale 'images'.

Le problème c'est que je ne suis pas sûr de la manière de dire à mon application 'webSite1' où aller chercher les images qui se situent dans le répertoire /projects/master/public/images/

Comment dois-je faire?

D'avance merci pour le temps que vous me ferez gagner.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Ton appli master a
Auteur: 
hery
Date: 
Mer, 02/07/2008 - 20:37

Ton appli master a certainement une URL propre : http://Master/
Tes appli slave ont la leur aussi : http://Slave1 etc ...

Pour les images il suffit d'indiquer l'URL lorsque tu fais appel à image_tag :

image_tag( 'http://Master/images' + @image.public_path )

Tu fais un petit helper pour ça que tu appeleras par exemple image_master_tag dans chaque application slave.

Ce n'est pas très propre mais je pense aussi qu'une bonne solution a été dit auparavant (ça permet de ne pas lancer plusieurs serveurs )

Sinon il y a toujours config.action_controller.asset_host que tu peux modifier dans "config/environments/#{RAILS_ENV}.rb" ouconfig/environment.rb .


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Qui est en ligne
Il y a actuellement 1 utilisateur et 36 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Propulsé par Drupal ]