我正在努力设置一个公司的所有部分的多个网站。我正在使用nitrous.io进行开发。我读过你可以在生产中使用一个DB。我是否也需要在开发方面做到这一点?不知道怎么做。
要使用的非法盒子/域上的文件结构
我将为帐户使用设计,并希望实现跨站点登录。已经考虑了一些。
从我所看到的内容来看,有点像其他帖子所涵盖的内容比我想要的更多,并且可以成为PITA。听起来好像如果不止一个站点需要修改相同的表,它会变得复杂。事实并非如此。一个站点可以编辑给定的表,但其他站点需要访问该表。
任何提示将不胜感激。
伊恩
答案 0 :(得分:2)
您绝对不希望多个网站都与同一个数据库通信。这是混乱的秘诀。以下是可能出错的几个例子......
但一切都没有丢失!!!
您需要做的是创建一个服务器,该服务器是其他站点的API。您的所有站点都将调用此单个服务器进行所有更新,并且该单个服务器将是唯一与数据库通信的服务器。
您的API将有一些基本操作 - 一个用于创建新记录,一个用于记录,一个用于更新记录,另一个用于删除记录。
您可以从http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default查看Rails资源文档开始 - 它介绍了如何自动生成基本CRUD API。 CRUD btw代表创建,读取,更新和删除 - 您将要执行的基本功能。
稍后,您可以通过API获得更多创意,并展开以添加更多功能。假设每次创建订单时,都需要采取几个步骤。您可以做的是在您调用的API中创建一个路由,并且该路由的控制器会进行所有必要的更新。基本上,每当您发现自己为每个站点编写代码时,每次都会生成相同的API调用集,您应该考虑在API中创建一个新的路由来进行该调用。
API的另一个优点是,它可以让您对想要数据库和操作的内容有所了解。
您可以先将基本API放在一起,然后只编写一个网站。让它工作,然后添加另一个。考虑使用Google搜索“Rails restful API”以获得一些好的参考,祝你好运!
答案 1 :(得分:0)
Rails用户通常在一个数据库中使用多个schemas,以防多个应用程序"是一个多个版本的应用程序 - 例如" customer2.mycompany.com"," customer3.mycompany.com"等。这通常被称为"多租户"托管。
您可以查询共享表和用户/站点/产品特定表,使用search_path
控制哪些表。
注意:
这种方法也适用于多个应用访问共享数据的情况,但只有当所有应用共享相同的代码才能访问共享数据时,它才能正常运行。这可以是一个Web API(根据Tim的回答),一个提供函数或对象的库,或者它可以是一个带有视图和过程的数据库级API。 (对于Rails,只有一个Web API或库可以正常工作,Rails往往对基于视图和过程的接口处理得很差。)
如果每个应用都有自己的代码来访问共享数据,那么您将浪费时间和精力 - 而且您还会将维护变成一场噩梦。每次您必须以任何方式更改共享数据的结构时,您都必须更新所有应用程序。