2009-12-04 118 views
9

我有一個紅寶石web app,它使用lilypond根據用戶輸入生成樂譜。我想將主機移到heroku(我最近在一些項目上使用了heroku,並且非常喜歡它,加上我的流量足夠低,它至少可以在heroku上免費託管它)。然而,heroku的動態架構不允許你ssh和安裝任何你想要的軟件包......相反,你給它一個寶石清單,它會爲你安裝寶石。因此,如果我要部署到heroku,我將需要將lilypond打包爲寶石。我已經發布了一些純ruby的寶石,但沒有處理本地擴展或預編譯的二進制文件,或類似的東西。打包寶石內預編譯的二進制文件

是否有可能採取一些預編譯的二進制文件並將其打包到一個gem中?理想情況下,這將包括OS X(我開發的)和debian linux(這是heroku上運行的)的二進制文件,並且在安裝gem時安裝適當的二進制文件。

回答

1

而是預編譯的,你應該能夠只列出寶石在你.gems文件,看到Heroku documentation。當然,這需要您的gem正確構建本機代碼 - 這仍然是一項任務,但希望更容易。

1

我想你已經有了幾個選擇這裏:

你可以得到LilyPond的source並將其打包成具有原生的C擴展的瑰寶。對於如何做到這一點的http://guides.rubygems.org/c-extensions/http://patshaughnessy.net/2011/10/31/dont-be-terrified-of-building-native-extensions

還有一個叫gitara寶石一些有用的指導,但我一直沒能找到有關使用它在Heroku上的任何信息。可能值得給作者發電子郵件並詢問他是否知道這件事。

您可以創建一個Heroku buildpack,作爲部署的一部分安裝Lilypond。我無法找到任何Lilypond,但有很多例子可以做類似的事情 - 例如,this one會安裝Imagemagick(默認情況下它包含在Heroku中,所以可能不再需要 - 但希望代碼有用) 。更多文檔在https://devcenter.heroku.com/articles/buildpack-apihttps://devcenter.heroku.com/articles/buildpack-binaries

根據我的閱讀,我認爲 buildpack選項是最好的方法。

希望這有助於!