2010-11-19 31 views
1

Quelle est la meilleure façon d'organiser plusieurs incarnations légèrement différentes d'une application Rails?Plusieurs incarnations d'une application Rails

Les incarnations varient en CSS, images, base de données et domaine. L'application/logique est par ailleurs exactement la même. Il est possible que les noms de chemin faisant face au public de certaines routes doivent varier, mais toujours la même structure de route. Je pense donc à une installation de l'application et à la gestion de ces changements dans l'environnement. C'est ce que je pense.

DB est évidemment déjà bien mis en place pour cela. CSS et les chemins de l'image que j'imagine seraient assez faciles à prendre conscience de l'environnement. Les routes ne devraient pas être trop difficiles, je suppose, en théorie, de toute façon.

La raison pour laquelle j'écris cet article est parce que je suis sûr que ce problème doit être résolu. Existe-t-il une gemme "skins" ou quelque chose que je puisse utiliser pour cela? Sinon, tous les commentaires sur mon approche planifiée seraient grandement appréciés! J'utilise Rails 3.

Répondre

1

Pourquoi ne pas simplement maintenir des branches séparées dans votre système de contrôle de révision?

1

Beaucoup de choses dépendent de la raison pour laquelle vous essayez d'y parvenir. Nous desservons actuellement quatre «applications» différentes sur quelques domaines et sous-domaines différents à partir de la même application Rails. Nous faisons cela parce que nous avons différents clients qui veulent voir les différentes fonctionnalités de notre produit. Par exemple, chaque produit partage l'idée des clients, des contrats, des commerçants et de nombreux autres modèles, mais ils veulent que le site soit marqué différemment, les éléments de tabulation et de menu nommés différemment et certaines parties du site inaccessibles à certaines personnes. Vous avez décrit les CSS et les images comme étant vos principales préoccupations. Je m'en tiendrai à ces dernières, mais nous avons également dû utiliser des idées pour corriger les mises en page, les autorisations et le javascript parmi d'autres problèmes et ressources. Par souci de simplicité, je vais appeler une peau ce qui dans notre cas est un produit distinct.

Notre application a un plugin qui configure certaines variables d'environnement en fonction du domaine entrant. Ensuite, en fonction de ces variables, notre application Rails fournira des mises en page et des partiels différents selon les besoins. Ces mises en page font ensuite référence au JS approprié et aux images qui sont stockées dans des emplacements qui ont du sens pour les concepteurs et les développeurs frontaux. Par exemple, customer.js peut stocker les opérations habituelles du client, puis dans un sous-répertoire, il peut y avoir un customer.js pour un skin et il va étendre le fichier client.js principal (nous utilisons Dojo pour cela).

Dans d'autres domaines où la sécurité est un problème, nous avons des bibliothèques qui font ce qui est nécessaire en fonction des variables d'environnement qui ont été définies par notre domaine gem.

Nous devons également fournir une image de marque dynamique afin que ces vues et mises en page aient à leur tour une aide logique pour déterminer l'origine des images, etc. Pour CSS, nous utilisons SASS, donc la plupart du temps, vous pouvez utiliser des mixins pour les couleurs et les images. Nous faisons cela en ayant un fichier racine SASS avec des informations de mise en page qui utilisent des variables pour les couleurs et les images. Ensuite, nous aurons besoin de ces fichiers de couleurs et fichiers d'images dans le SASS racine, au besoin.

La réponse peut être meilleure si vous donnez quelques informations sur la façon dont vous déterminez entre ces deux habillages. Autant que je sache, il existe déjà des plugins de domaine qui pourraient vous aider à déterminer le site auquel l'utilisateur tente d'accéder. En ce qui concerne la façon d'organiser votre application pour rendre le CSS correct, les images, JS et ainsi de suite j'espère que ce que j'ai décrit aide un peu.