我正在编写一个开源的节点模块,并且依赖于某些Ruby代码(有关详细信息,请参阅Can I include a Ruby Gem in a Node.js project?)。我制作了一个需要一些宝石的Ruby项目,所有这些都很有效。在我的node_module中,我想通过exec
将它连接到Ruby代码。
但现在还有Ruby依赖项。那么我可以以某种方式指定Ruby版本,以及运行我的节点包所需的gemset吗?
也许是模棱两可的问题。我可以澄清是否有任何不清楚的地方。
答案 0 :(得分:2)
我认为您不能/应该指定在执行代码时使用的Ruby版本。这应该是图书馆消费者的选择。由于您希望使用exec
执行代码,因此库使用者将具有使ruby可供节点进程访问的附加责任。作为图书馆开发人员,这不会取决于你。
至于依赖项/ gemsets,只需使用bundler。
答案 1 :(得分:1)
也许你可以做这样的事情 - 没有更多的信息,很难说。
在ruby方面,构建你的gem来做它需要做的任何事情,然后为它添加一个rake任务。如何构建此rake任务显然取决于项目的需求及其使用方式,但它将为您提供从外部进行接口的方法。
在'中间'构建一个包含RVM的bash脚本 - 这样你就可以在运行rake任务之前需要一个特定的gemset / do特定的东西。另一个好处是,如果要更改gemset或其他实现细节,只需更改bash脚本即可。
在节点端,调用bash脚本。有关this answer的更多信息。