我如何在一个NPM包中打包Ruby代码?

我正在编写一个节点模块来开源,并且依赖于一些Ruby代码(请参阅可以在Node.js项目中包含Ruby Gem? )。 我做了一个Ruby项目,需要一些gem,所有这一切运作良好。 在我的node_module中,我想通过exec将其连接到Ruby代码。

但现在也有Ruby的依赖关系。 那么我可以以某种方式指定Ruby版本,以及运行我的节点包所需的gemset?

也许是暧昧的问题。 我可以澄清,如果有什么不清楚的。

我不认为你可以/应该指定执行代码时使用的Ruby版本。 这应该是图书馆消费者如此select。 既然你想用exec来执行你的代码,那么这个库的使用者将会增加对节点进程的访问权限。 图书馆开发人员如何做到这一点并不取决于你。

至于依赖项/ gemsets,只需使用bundler即可。

也许你可以做这样的事情 – 没有更多的信息很难说。

  1. 在ruby方面,build立你的gem做任何需要做的,然后添加一个耙子任务。 你如何构build这个rake任务显然取决于项目的需求以及如何使用它,但它将为你提供一种从外部接口的方法。

  2. 在“中间”构build一个包含RVM的bash脚本 – 这样,在运行rake任务之前,您可以要求特定的gemset / do具体事物。 另一个好处是,如果您想更改gemset或其他实现细节,只需更改bash脚本。

  3. 在节点端,调用bash脚本。 更多的信息在这个答案 。