【问题标题】:Call Rails Method from C++ Program从 C++ 程序调用 Rails 方法
【发布时间】:2011-09-30 03:28:30
【问题描述】:

我有一个关于 C++ 到 Ruby on Rails 通信的相当奇怪的问题。每当我的 C++ 程序中发生某些事件时,我都会尝试更新 Rails 服务器中的视图,这两个事件都在同一台机器上。是否可以从 C++ 程序调用 RoR 服务器上的控制器中的方法?如果是这样,怎么办?

【问题讨论】:

    标签: c++ ruby-on-rails communication


    【解决方案1】:
    • 如果这些更新频率很高,请考虑绕过 Rails 并直接从 C++ 应用程序更新数据库。
    • 如果更新不频繁,您可以考虑使用 C HTTP 库(如 curl)通过 HTTP 堆栈触发 Rails 应用程序的更新;您可能希望限制对这些更新控制器方法的访问。
    • 如果更新非常少见,它可能只是从 C++ 应用程序中运行 rake 任务的充分解决方案。

    虽然在技术上可以通过 SWIG 之类的方式从 C++ 调用 ruby​​,但它确实是一种繁琐的解决方案,可能难以维护和调试。

    【讨论】:

    • 更新频率可能有点高,发送的数据不需要保存在数据库中,只需要在视图中显示即可。 Curl 似乎是一个有趣的想法......我找到了通过 C++ 中的 Curl 发布的资源,但没有找到通过 Ruby/Rails 中的 Curl 获取数据的资源......对此有什么想法吗?
    • 如果数据没有存储在数据库中,它需要存在于某个地方。也许您可以将数据存储在 memcached 中,使用 C++ 编写,然后在渲染视图时从 rails 中的 memcached 读取数据?这实际上取决于您的环境中还有哪些其他可用的服务。
    • 我实际上并没有遵循;显示视图是什么意思?该视图将显示给您的 C++ 程序。是不是程序正在保存请求的HTML结果以备后用?还是您希望使用 Rails 站点的人看到通过发送请求生成的 C++ 程序相同的页面?
    【解决方案2】:

    您可以让 Rails 应用程序通过 XML-RPC 公开其控制器方法——有一个 library 可以做到这一点。然后只需使用 C++ XML-RPC 库来调用它。

    【讨论】:

    • Jason 关于限制访问的评论当然在这里同样适用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多