1

我对 ruby​​ 和 rails 都很陌生,但对 java、javascript 和一点 python 有经验。

我正在考虑创建一个 Web 应用程序,在该应用程序中应该可以创建具有各种属性和它们之间的连接(关系)的不同事物(模型)。Ruby on Rails 似乎支持一些无模式后端(mongodb、neo4j 等),所以它引起了我的兴趣。是否可以构建一个 Web 界面来创建新的 RoR 模型,向它们添加属性和关系?我希望 Web 界面中的用户操作能够转换为具有 RoR 服务器上指定属性的新模型。这些模型当然应该以某种方式持久化(也许它们可以作为 ruby​​ 文件持久化?)。我想您可以在某些方面将其视为 CMS。

我应该搜索哪些工具或概念?

问候奥斯卡

4

1 回答 1

2

当然可以按照您的要求进行操作,并且有几种不同的方法,但我建议您更深入地了解您的要求。

在 Ruby 以外的语言中,我帮助其他人构建和构建了类似的元建模 CMS 框架。第一个是在 1999 年完成的:完整的 Web GUI,用于直接从浏览器创建模型和模型之间的关系。当时我们必须这样做的原因是我们使用的底层平台使得创建模型和执行 MVC 变得相当困难,因此我们必须帮助开发人员使用框架代码和 GUI 工具。

Ruby 作为一种语言非常适合内部特定领域的语言。Rails 大量使用内部 DSL,尤其是在ActiveModel. 因此,为 Rails 模型编写基本代码通常比使用其他(更高)抽象级别要容易得多。尤其是 GUI 工具,在构建良好模型时非常难以处理,因为双向:需要能够允许手动更改代码并将该更改反映在 GUI 中。这是一个棘手的问题。

尽管如此,如果您仍想使用基于 GUI 的元建模方法,您可以选择两种主要路径:

  1. 构建参数化的 RoR 元模型
  2. 生成特定的 RoR 模型

从您问题的措辞看来,您似乎对 (2) 感兴趣。在这种情况下,有两种标准方法可以解决这个问题:解释或编译。如果您进行解释,那么您将创建一个用于描述模型的 DSL,并且它的执行会在 Rails 环境中实例化模型。(在 Ruby 中,类是通过执行定义它们的代码来定义的,所以这一切都很正常。)如果您进行编译,您将使用您最喜欢的持久性框架代码生成标准 RoR 模型。那么问题就变成了您将代码保存在哪里。您可以将其写入磁盘并加载。例如,您也可以将其存储在数据库中。在这两种情况下,您可能都希望查看诸如sourcify 之类的宝石。

附带说明一下,如果您选择构建这种类型的系统,我强烈建议您使用 NoSql 面向文档的持久性机制,例如,使用 Mongoid 之类的 MongoDB。原因是 Rails 对 SQL 模式管理的支持有限,甚至更少的工作流自动化(除了基本的迁移)。给人们一个 GUI,他们可能会更频繁地混淆模式。因此,您必须处理架构迁移问题。文档数据库使这变得更简单(部分是通过将问题留给代码以懒惰的方式处理问题)。关系数据库通常不允许您这样做。它们需要预先进行模式迁移工作,这会给您的系统增加许多要求,并给整个开发人员工作流程带来摩擦。

祝你好运!

于 2012-06-27T04:24:21.250 回答