如何将Ruby API编译到多个客户端库中

时间:2014-03-19 04:42:42

标签: ruby api rubygems client libraries

我的团队目前正在创建一个与我们的核心Ruby API交互的API。

新的API适用于公众,因为Ruby API是我们的私有API。我们希望能够在准备发布时将这个新API编译成PHP,Java,Python等客户端库。

是否有任何宝石或其他方法来编写这个新API,以便我们可以将其编译到不同的客户端库中?

1 个答案:

答案 0 :(得分:0)

现在有几种方法可以考虑暴露API。如果我们谈论在编译到其他应用程序中的某种意义上创建库,那么我们就会走上一条道路。如果我们正在谈论有效地提供从其他环境调用的命令行功能作为系统调用,那就是另一个故事。更广泛地说,API更像是一种服务,比如REST,它是不同的。我将假设前两个中的一个。

有几种工具可以为平台创建二进制包。查看ruby-tioolbox.com的一些示例。这些都没有编译真正的可执行代码(据我所知),但主要是提供ruby的可执行版本,其中包含您的代码和依赖项。也许API似乎可以作为系统库调用(Windows的DLL,UNIX的SO)。

但不管怎样,我认为你正在处理ruby,你的代码在每次调用时作为一个单独的进程加载和运行。有一个像这样的库(不是在Ruby中),名为ImageMagick,带有一个名为MiniMagick的ruby调用包装器,它可能指向你正在寻找的那种模式。

如果你想运行ruby和你的应用程序作为服务,有几个工具可以解决这个问题 - 这有助于解决每次加载进程的开销,并且内置到Ruby 1.9中的是Process类daemonizes ruby​​,虽然大概只在Unix上。查看this SO answer

最好的答案可能是ruby,就像其他类似的语言(例如Python)实际上并不是设计为低级系统库。在给定的环境中可能有很多方法可以实现你想要的东西(特别是Linux)...但据我所知,没有任何东西可以将可执行代码点暴露给所有语言。