【问题标题】:Packaging precompiled binaries inside of a gem在 gem 中打包预编译的二进制文件
【发布时间】:2010-12-23 08:35:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby rubygems heroku gem


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      您可以创建一个 Heroku buildpack,将 Lilypond 安装为您的部署的一部分。我无法为 Lilypond 找到任何示例,但有很多示例可以做类似的事情 - 例如,this one 安装 Imagemagick(默认情况下包含在 Heroku 中,因此可能不再需要 - 但希望代码是有帮助)。更多文档请访问 https://devcenter.heroku.com/articles/buildpack-api 和 https://devcenter.heroku.com/articles/buildpack-binaries

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

      希望这会有所帮助!

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2015-01-31
          • 2021-06-01
          • 2014-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-22
          • 1970-01-01
          相关资源
          最近更新 更多