如何在 Heroku 上安装 charlock_holmes 依赖项 libicu-dev [英] How to install charlock_holmes dependency libicu-dev on Heroku
问题描述
我在 Rails 4 应用程序中使用 ruby gem charlock_holmes 来检测 CSV 的字符编码我正在解析以便 CSV.foreach
不会抛出错误.
I'm using the ruby gem charlock_holmes in a Rails 4 app to detect the character encodings of CSV's that I'm parsing so that CSV.foreach
doesn't throw an error.
但是,当我尝试推送到 heroku(使用 Gemfile 中的 gem 'charlock_holmes'
)时,我收到以下错误:
However, when I try to push to heroku (with gem 'charlock_holmes'
in the Gemfile) I get the following error:
Installing charlock_holmes (0.6.9.4)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/tmp/build_e741f6ed-a860-47bf-8c0d-1b678fa0ebeb/vendor/ruby-2.0.0/bin/ruby extconf.rb
checking for main() in -licui18n... no
checking for main() in -licui18n... no
***************************************************************************************
*********** icu required (brew install icu4c or apt-get install libicu-dev) ***********
***************************************************************************************
*** 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=/tmp/build_e741f6ed-a860-47bf-8c0d-1b678fa0ebeb/vendor/ruby-2.0.0/bin/ruby
--with-icu-dir
--without-icu-dir
--with-icu-include
--without-icu-include=${icu-dir}/include
--with-icu-lib
--without-icu-lib=${icu-dir}/
--with-icui18nlib
--without-icui18nlib
--with-icui18nlib
--without-icui18nlib
Gem files will remain installed in /tmp/build_e741f6ed-a860-47bf-8c0d-1b678fa0ebeb/vendor/bundle/ruby/2.0.0/gems/charlock_holmes-0.6.9.4 for inspection.
Results logged to /tmp/build_e741f6ed-a860-47bf-8c0d-1b678fa0ebeb/vendor/bundle/ruby/2.0.0/gems/charlock_holmes-0.6.9.4/ext/charlock_holmes/gem_make.out
An error occurred while installing charlock_holmes (0.6.9.4), and Bundler cannot
continue.
Make sure that `gem install charlock_holmes -v '0.6.9.4'` succeeds before
bundling.
如何让 libicu-dev
安装在 Heroku 上?
How do I get libicu-dev
to install on Heroku?
推荐答案
遗憾的是其他两个解决方案对我不起作用(见下文),所以我不得不想出我自己的解决方案.此解决方案适用于 Ruby 1.9.3,但 hammady 表示它不适用于 2.0.0.
Sadly the other two solutions don't work for me (see below), so I had to come up with my own solution. This solution works with Ruby 1.9.3 but hammady says it does not work with 2.0.0.
我使用了heroku-buildpack-multi
:
heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
使用以下 .buildpacks
:
https://github.com/benjie/heroku-buildpack-apt
https://github.com/heroku/heroku-buildpack-ruby
还有这个Aptfile
:
libicu-dev
我的>heroku-buildpack-apt
需要通过 BUNDLE_BUILD__CHARLOCK_HOLMES 变量rel="nofollow noreferrer">Heroku 的 ENV_DIRs.在 Gemfile 中,您只需像往常一样引用 gem 'charlock_holmes'
,现在对我来说一切都很顺利.
My fork of heroku-buildpack-apt
is required to export the BUNDLE_BUILD__CHARLOCK_HOLMES
variable via Heroku's ENV_DIRs. In the Gemfile you just reference gem 'charlock_holmes'
as usual and all works smoothly now for me.
如果有人能想到一种不涉及导出BUNDLE_BUILD__CHARLOCK_HOLMES
的方法,请告诉我!
If anyone can think of a way that doesn't involve exporting BUNDLE_BUILD__CHARLOCK_HOLMES
then please let me know!
Ryan 的 答案对我不起作用 - Heroku 保释,因为捆绑安装步骤不提供任何输出3分钟.Silasj 的 答案引用了 frederick/heroku-buildpack-ruby
构建包,该构建包不再维护且滞后落后于官方 heroku-buildpack-ruby
相当多,我无法接受.
Ryan's answer doesn't work for me - Heroku bails because the bundle install step doesn't offer any output for 3 minutes. Silasj's answer references the frederick/heroku-buildpack-ruby
buildpack which is no longer maintained and lags behind the official heroku-buildpack-ruby
by quite an amount, which is not acceptable to me.
这篇关于如何在 Heroku 上安装 charlock_holmes 依赖项 libicu-dev的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!