2010-04-08 46 views
4

单个Ruby on Rails安装是否可以有多个应用程序共享一个通用模型?Ruby on Rails上的多个应用程序

例如,我想要有一个前端应用程序以及后端管理控制台,但都共享相同的模型。

这与Symfony在PHP中的工作方式类似。

提前致谢!

+0

如果我理解正确,后端控制台不应该从Web上可见?它应该是一个应用程序或从命令行运行的一些ruby脚本?或者你只是指一个管理面板? – 2010-04-08 12:56:16

回答

10

拥有管理面板的最简单方法是使用命名空间。你只需将所有管理员的东西都放到管理员名称空间中这是非常普遍的做法。另一方面,如果你想让两个(或更多)应用程序共享同一个数据库和模型,那么这很容易。我有一个项目有两个共享相同数据库的RoR应用程序。所以这里是我的想法:

  1. 我把所有的迁移到我的第一个项目。如果您将所有这些应用程序(或几乎没有的应用程序)放在这两个应用程序中,可能会很麻烦。然后,在迁移之后,您可以将schema.db复制到第二个项目,或者只是一个符号链接(在类Unix系统中),不再关心它。
  2. 如果您想在两个应用程序中共享某个模型,则可以复制模型文件或使用符号链接。我使用了第一种方法,因为我不想复制在第二个应用程序中不使用的所有相关模型。
  3. 它很好用。但在这种情况下,您还必须为两个应用程序设置服务器。我为这两个应用程序使用了不同的子域。

希望它有帮助!

+0

我会阅读命名空间,这听起来是我正在寻找。请原谅我的术语。 :) – 2010-04-08 13:15:54

+0

'那么你可以复制模型文件'你的意思只是应付model.rb文件?如果是这样,它没有帮助。 – Pavel 2012-06-22 23:28:51

2

klew的建议为我工作。我有一个全功能的管理后端,需要一个精益和专注的API应用程序。

我结束了对第二个应用程序使用rails_api gem并创建它在一个单独的用户帐户下。

我使用postgres作为我的数据库。

然后我不得不做以下几点: 编辑database.yml,以使用同一个数据库,用户名,密码与其他应用程序 而不是复制我使用LN文件-s 我联系schema.rb和任何模型。 rb文件,我想在API中使用。 在这一点上,我能够在API应用程序中使用rails控制台。

由于我使用的是rails_api gem,我显然缺少路由。这可能是一件好事,因为我可以根据需要手动创建特定的路由,而不会向网络暴露任何其他内容。

我不在API应用程序中进行任何迁移,除了model.rb文件的奇怪链接之外,其他所有内容都在我的原始应用程序中完成。

似乎很好地工作,谢谢Klew!

相关问题