Plugins 常见的web框架(Django、Rails、Symfony等)如何处理同一插件的多个实例?

Plugins 常见的web框架(Django、Rails、Symfony等)如何处理同一插件的多个实例?,plugins,Plugins,有没有流行的web框架能够很好地解决这个问题 这里有一个例子:假设您正在运行其中一个web框架,并且希望安装一个博客插件。除了一个博客之外,您需要运行两个独立的博客插件实例,并且希望将它们分开 或者说,您想安装一个用户身份验证插件的多个实例,因为您想将管理用户与客户用户帐户分离 或者说,您想为站点的不同部分安装多个wiki插件实例,或者安装多个comments插件实例,或者其他任何东西 在我看来,在基本层面上,插件的每个实例都需要能够配置一组不同的数据库表,并且需要“安装”在不同的URL路径上

有没有流行的web框架能够很好地解决这个问题

这里有一个例子:假设您正在运行其中一个web框架,并且希望安装一个博客插件。除了一个博客之外,您需要运行两个独立的博客插件实例,并且希望将它们分开

或者说,您想安装一个用户身份验证插件的多个实例,因为您想将管理用户与客户用户帐户分离

或者说,您想为站点的不同部分安装多个wiki插件实例,或者安装多个comments插件实例,或者其他任何东西

在我看来,在基本层面上,插件的每个实例都需要能够配置一组不同的数据库表,并且需要“安装”在不同的URL路径上

我的经验主要是Django和Symfony,我还没有在这两个方面看到一个干净的解决方案。他们都倾向于假设每个插件(或应用,在Django的例子中)只安装一次

我很好奇Rails的人是否已经找到了这个问题的干净解决方案,或者其他框架的作者(用任何语言)


如果你打算为这个问题设计一个解决方案,它看起来像什么?

它看起来像一个
blogfactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactoryFactory。。。

在Ruby/Rails世界中,至少不需要安装两个插件副本。单个副本应该能够处理您正在讨论的用例(多个博客,或多个用户类型,或多个表或使用STI)。这两者都不需要或不需要多次安装插件。

您能详细说明一下吗?您将如何隔离每个正在运行的实例,以便(例如)为两个博客正确返回所有博客文章的列表?您是否向BlogPost模型添加了一个额外的列并进行了筛选?还是完全不同的东西?如何根据URL区分博客A和博客B?根据URL?在blogs表中有一个包含该信息的字段,然后在控制器中检查请求URI,然后在过滤器之前设置要处理的blog,然后从那里开始。你甚至可以提高一个级别,而不是有一个网站模型,它保存一个域列表,设置网站,并有博客,等等。范围到网站,而不是直接到URL。好的,所以你必须扩展插件以使其工作。这与我使用的其他web框架大致相同。是的,您提到的用例通常可以通过单个应用程序的多个部署来解决。如果你真的需要单独安装一个代码库,假装它是完全独立的安装,你必须卷起袖子。