Ruby on Rails的多个应用程序

是否有可能让一个Ruby on Rails安装有多个应用程序,它们共享一个共同的模型?

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

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

提前致谢!

拥有管理面板的最简单方法是使用命名空间。 您只需将所有管理员资料放入管理员命名空间 这是很常见的做法。

另一方面,如果您希望两个(或更多)应用程序共享相同的数据库和模型,则非常容易。 我有一个项目有两个共享相同数据库的RoR应用程序。 所以这是我的想法:

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

希望能帮助到你!

klew的建议对我有用。 我有一个function齐全的管理员后端,需要精简和专注的API应用程序。

我最终使用rails_api gem作为第二个应用程序并在单独的用户帐户下创建它。

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

然后我必须执行以下操作:编辑database.yml以使用与其他应用程序相同的数据库,用户名和密码,而不是复制我使用的文件ln -s我链接了schema.rb和我想要使用的任何model.rb文件在API中。 此时我可以在API应用程序中使用rails控制台。

当我使用rails_api gem时,我显然错过了路线。 这可能是一件好事,因为我能够根据需要手动创建特定路线,而不会向网络公开任何其他内容。

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

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

在RoR中运行多个应用程序的最常用方法是使用引擎架构。 它已被用于很多生产应用中。

以下是RoR文档http://guides.rubyonrails.org/engines.html中的详细信息

TaskRabbit的示例代码库,其中包含有关不同方法的非常详细的说明

添加这个老问题,因为我发现这个线程的第一个结果,因为我搜索谷歌。 此问题也很模糊,因为人们实际上可能希望从同一个RoR框架运行两个完全分离的应用程序。(为什么?不知道……)