首页 > 解决方案 > 使用 Ruby 与 Cytoscape.js API 交互

问题描述

我正在编写一个用于创建有向无环图数据结构的 Ruby 模块,该模块将包括添加/删除节点、边、防止循环和维护拓扑顺序的所有功能。最终它将成为评估可能相互依赖的表达式的类似电子表格的实用程序的核心。

如果我的数据结构可以在用于绘制图形的众多功能强大的 js 库之一中可视化,这将非常有帮助,尤其是对于测试而言——我选择了Cytoscape.js。它的设置非常简单,它有一个很好的 JavaScript API 可以与图形交互和修改。我想知道 Ruby 是否有某种方式可以与浏览器窗口进行通信,特别是与在那里运行的 Cytoscape 实例进行通信。实际上,我想我想将浏览器用作我的 Ruby 程序的 GUI。理想情况下,我可以在 IRB 中加载我的模块,调用my_graph.add_edge('node_a', 'node_b'),一旦我的 Graph 类检查循环并根据需要重新排序,它会调用cy.add({edge JSON...})Cytoscape 实例并进行所有更新。

我在 Windows 10 上运行 ruby​​ 2.66,我的浏览器是 Firefox。

抱歉,如果这是一个幼稚的问题,我对 ruby​​ 相当了解,但对 Web 开发知之甚少。GUI 在 Ruby 世界中并不是一个大话题,它们似乎都用于制作小型桌面应用程序。我还想避免 Ruby of Rails 的复杂性。谢谢阅读!

标签: javascriptrubyuser-interfacecytoscape.jsweb-frontend

解决方案


我不知道是否有一个库可以从 Ruby 中控制 cytoscape。很多时候,缺乏用于科学的 Ruby 库。您可以选择创建自己的。

如果我必须制作 ruby​​-cytoscape,我会使用https://github.com/cytoscape/cyREST

使用 Ruby 的 method_missing 和动态方法定义,创建一个运行良好的客户端并不难。

祝你好运!

PS。我找到了这个。 https://github.com/kozo2/rb2cytoscape 但这只是一个骨架。


推荐阅读