Ruby 将预编译的二进制文件打包到gem中

Ruby 将预编译的二进制文件打包到gem中,ruby,rubygems,heroku,gem,Ruby,Rubygems,Heroku,Gem,我有一个ruby,用于根据用户输入生成乐谱。我想把主机转移到(我最近在一些项目中使用了heroku,并且非常喜欢它,加上我的流量很低,至少在一段时间内,它可以在heroku上免费托管)。然而,heroku的dyno体系结构不允许您通过ssh连接并安装您想要的任何软件包……相反,您给它一个gems清单,它将为您安装gems 所以,如果我要部署到heroku,我需要将lilypond打包为gem。我已经发布了一些纯ruby gems,但还没有涉及本机扩展或预编译二进制文件,或者类似的东西 是否可以将

我有一个ruby,用于根据用户输入生成乐谱。我想把主机转移到(我最近在一些项目中使用了heroku,并且非常喜欢它,加上我的流量很低,至少在一段时间内,它可以在heroku上免费托管)。然而,heroku的dyno体系结构不允许您通过ssh连接并安装您想要的任何软件包……相反,您给它一个gems清单,它将为您安装gems

所以,如果我要部署到heroku,我需要将lilypond打包为gem。我已经发布了一些纯ruby gems,但还没有涉及本机扩展或预编译二进制文件,或者类似的东西


是否可以将一些预编译的二进制文件打包到gem中?理想情况下,这将包括OS X(我在其上开发)和debian linux(在heroku上运行)的二进制文件,并将在安装gem时安装正确的二进制文件。

这是可能的,因为预编译的windows二进制gem是标准。也许可以看看rake编译器。 另外()可能会有所帮助
-r

您应该能够在
文件中列出gem,而不是预编译。gems
文件,请参阅。当然,这需要您的gem正确构建本机代码-这仍然是一项任务,但希望是一项更简单的任务。

我认为您在这里有一些选择:

您可以获取Lilypond并将其打包到带有本机C扩展的gem中。关于如何在和中实现这一点,有一些有用的指南

还有一个叫做gem的东西,但我还没有找到任何关于在Heroku上使用它的信息。也许值得给作者发电子邮件,问问他是否知道这件事

您可以创建一个Heroku,作为部署的一部分安装Lilypond。我找不到Lilypond的任何例子,但是有很多例子可以做类似的事情——例如,安装Imagemagick(它默认包含在Heroku上,所以可能不再需要了——但希望代码有帮助)。更多文档,请访问和

根据我的阅读,我认为buildpack选项是最好的选择

希望这有帮助