9

我有一个 ruby​​ 网络应用程序,它使用lilypond根据用户输入生成乐谱。我想将主机移到heroku(我最近在几个项目中使用了heroku,并且非常喜欢它,而且我的流量足够低,至少可以在heroku上免费托管一段时间)。然而,heroku 的 dyno 架构不允许你通过 ssh 进入并安装你想要的任何包……相反,你给它一个 gems manifest,它会为你安装 gems。

因此,如果我要部署到 heroku,我需要将 lilypond 打包为 gem。我已经发布了一些纯红宝石 gem,但还没有处理原生扩展或预编译的二进制文件或类似的东西。

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

4

3 回答 3

3

这是可能的,因为 Windows 的预编译二进制 gem 是常态。也许看看 rake 编译器。https://github.com/rdp/ruby_tutorials_core/wiki/gem(https://en.wikibooks.org/wiki/Ruby_Programming/RubyGems )也可能帮助-r

于 2009-12-04T19:41:09.613 回答
2

我认为您在这里有几个选择:

您可以获取 Lilypond并将其打包到带有原生 C 扩展的 gem 中。在http://guides.rubygems.org/c-extensions/http://patshaughnessy.net/2011/10/31/dont-be-terrified-of-building-上有一些有用的指南关于如何做到这一点本机扩展

还有一个名为gitara的 gem,但我无法找到有关在 Heroku 上使用它的任何信息。可能值得给作者发电子邮件并询问他是否对此有所了解。

您可以创建一个 Heroku buildpack,将 Lilypond 作为部署的一部分进行安装。我无法为 Lilypond 找到任何示例,但是有很多示例可以做类似的事情——例如,这个安装了 Imagemagick(Heroku 上默认包含它,所以可能不再需要了——但希望代码有用)。更多文档位于https://devcenter.heroku.com/articles/buildpack-apihttps://devcenter.heroku.com/articles/buildpack-binaries

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

希望这会有所帮助!

于 2013-03-29T14:04:48.880 回答
1

除了预编译,您应该能够在.gems文件中列出 gem,请参阅Heroku 文档。当然,这需要您的 gem 正确构建本机代码 - 这仍然是一项任务,但希望是一个更容易的任务。

于 2010-07-29T05:53:37.913 回答