QA@IT

Herokuでcairoを使うには?

2546 PV

Herokuでcairoを使いたいのですが、git push heroku masterを実行した段階で
ExtensionBuildErrorになります。

どうやらHeroku環境に必要なライブラリがないようなのですが、回避方法をご存知の方おりましたら教えていただけると助かります。

以下、エラーメッセージ

$ git push heroku master
Counting objects: 3311, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1985/1985), done.
Writing objects: 100% (3311/3311), 1.12 MiB | 88 KiB/s, done.
Total 3311 (delta 2259), reused 1890 (delta 1243)

-----> Heroku receiving push
-----> Removing .DS_Store files
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.2.0.pre
       Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
       Fetching gem metadata from http://rubygems.org/.......
       Fetching gem metadata from http://rubygems.org/..
       Installing rake (0.9.2.2)
       Installing activerecord (3.0.12)
       Installing activeresource (3.0.12)
       Installing addressable (2.2.7)
       Installing pkg-config (1.1.3)
       Installing cairo (1.12.1) with native extensions
       Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
       /usr/local/bin/ruby extconf.rb
       checking for GCC... yes
       checking for Win32 OS... no
       checking for Mac OS X... no
       checking for cairo version (>= 1.2.0)... no
       *** extconf.rb failed ***
       Could not create Makefile due to some reason, probably lack of
       necessary libraries and/or headers.  Check the mkmf.log file for more
       details.  You may need configuration options.
       Provided configuration options:
       --with-opt-dir
       --without-opt-dir
       --with-opt-include
       --without-opt-include=${opt-dir}/include
       --with-opt-lib
       --without-opt-lib=${opt-dir}/lib
       --with-make-prog
       --without-make-prog
       --srcdir=.
       --curdir
       --ruby=/usr/local/bin/ruby
       --with-pkg-config
       --without-pkg-config
       --with-override-variables
       --without-override-variables
       Gem files will remain installed in /tmp/build_3mucbrheu8qzd/vendor/bundle/ruby/1.9.1/gems/cairo-1.12.1 for inspection.
       Results logged to /tmp/build_3mucbrheu8qzd/vendor/bundle/ruby/1.9.1/gems/cairo-1.12.1/ext/cairo/gem_make.out
       An error occurred while installing cairo (1.12.1), and Bundler cannot continue.
       Make sure that `gem install cairo -v '1.12.1'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

回答

Bundler のバージョンが 1.2.0.pre であることから、cedar スタックを利用していると思いますが、最新の環境である cedar スタックでビルドできない native extension な gem は残念ながら heroku では使用することが出来ません。

出来ることとしては

  • heroku にライブラリの追加を依頼する
  • 別の PaaS を利用する
  • PaaS の利用を諦めて VPS 等に自分で環境を構築する

のいずれかを選択することになると思います。

編集 履歴 (0)
  • AWS使わないと駄目かなという気はしていたのですが、、、回答ありがとうございます!大変参考になりました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。