Création d'une application multi-locataires utilisation de PostgreSQL est de schémas et de Rails
Trucs que j'ai déjà compris
Je suis en train d'apprendre comment créer une application multi-locataires dans les Rails qui sert de données à partir de différents schémas basés sur ce domaine ou sous-domaine est utilisé pour afficher l'application.
J'ai déjà quelques inquiétudes répondu:
- Comment pouvez-vous obtenir un sous-domaine-fu de travailler avec des domaines ainsi? Voilà quelqu'un qui a posé la même question qui vous mène à ce blog.
- De la base de données, et comment est-il structuré? Voici un excellent parler par Guy Naor, et de la bonne question à propos de PostgreSQL et de schémas.
- Je connais déjà mes schémas ont tous la même structure. Ils diffèrent dans les données qu'ils détiennent. Donc, comment pouvez-vous exécuter les migrations pour tous les schémas? Voici une réponse.
Ces trois points de couvrir beaucoup de la générale des trucs que j'ai besoin de savoir. Cependant, dans les prochaines étapes que j'ai semblent avoir de nombreux moyens de mise en œuvre de choses. J'espère qu'il y a une meilleure, la plus facile.
Enfin, à ma question
Lorsqu'un nouvel utilisateur se connecte, je peux facilement créer le schéma. Cependant, quelle serait la meilleure et la plus simple façon de charger la structure que le reste des schémas déjà? Voici quelques questions/scénarios qui pourraient vous donner une meilleure idée.
- Dois-je transmettre à un script shell qui vide le schéma public dans un temporaire, et les importations de revenir vers ma base de données principale (un peu comme ce Gars Naor dit dans sa vidéo)? Voici un résumé/script que j'ai eu de l'aide de la #postgres sur freenode. Bien que ce sera probablement le travail, je vais avoir à faire beaucoup de choses en dehors des Rails, ce qui me rend un peu mal à l'aise.. ce qui m'amène à la question suivante.
- Est-il un moyen de le faire directement à partir de Ruby on Rails? Par exemple, créer une PostgreSQL schéma, puis il suffit de charger les Rails de schéma de base de données (schéma.rb - je sais, c'est source de confusion) dans PostgreSQL schéma.
- Est-il un gem/plugin qui a ces choses déjà? Des méthodes comme "create_pg_schema_and_load_rails_schema(the_new_schema_name)". Si il n'y a rien, je vais probablement travailler à en faire un, mais je doute sur comment bien testé ça va être avec toutes les pièces en mouvement (surtout si je finis à l'aide d'un script shell pour créer et gérer de nouveaux PostgreSQL schémas).
Merci, et j'espère que ce n'était pas trop long!
Vous devez vous connecter pour publier un commentaire.
Mise À Jour Le 5 Décembre 2011
Grâce à Brad Robertson et son équipe, il y a le Appartement gem. Il est très utile et fait beaucoup de levage lourd.
Toutefois, si vous serez à bricoler avec des schémas, je vous suggère fortement de savoir comment il fonctionne réellement. Familiarisez-vous avec Jerod Santo procédure pas à pas , de sorte que vous saurez ce que l'Appartement gem est plus ou moins en train de faire.
Mise à jour Août 20, 2011 11:23 GMT+8
Quelqu'un a créé un post de blog et des promenades, bien que l'ensemble de ce processus plutôt bien.
Mise à jour le 11 Mai 2010 11:26 GMT+8
Depuis la nuit dernière, je ai été en mesure d'obtenir une méthode de travail qui crée un nouveau schéma et les charges de schéma.rb en elle. Vous ne savez pas si ce que je fais est correct (semble bien fonctionner, jusqu'à présent), mais c'est une étape de plus au moins. Si il y a une meilleure manière s'il vous plaît laissez-moi savoir.
table_exists?
méthode semble ignorer le schéma actuel... donc le chargementschema.rb
échoue alors qu'il tente de déposer un non-existant tableChangement de la ligne 38 à:
Je présume que postgres est en essayant de recherche existants, les noms de table lors du chargement de schéma.rb et puisque vous avez défini le search_path pour contenir uniquement le nouveau schéma, il échoue. Ceci, bien sûr, est en supposant que vous avez encore le public du schéma de votre base de données.
Espère que ça aide.
pg_power fournit cette fonctionnalité pour créer/supprimer PostgreSQL les schémas de migration, comme ceci:
Aussi il prend en charge environ correctement dumping schémas dans le schéma.rb fichier.