ruby-on-rails - 在 heroku 安装 therubyracer,未能构建 gem native 扩展

标签 ruby-on-rails ruby ubuntu heroku

我一直在将 Rails 应用程序上传到 Heroku 时出错

Installing therubyracer (0.11.0)
       Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
       /usr/local/bin/ruby extconf.rb
       checking for main() in -lpthread... yes
       checking for v8.h... 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-pthreadlib
       --without-pthreadlib
       --enable-debug
       --disable-debug
       --with-v8-dir
       --without-v8-dir
       --with-v8-include
       --without-v8-include=${v8-dir}/include
       --with-v8-lib
       --without-v8-lib=${v8-dir}/lib
       /tmp/build_3srt9ifqtbs6m/vendor/bundle/ruby/1.9.1/gems/therubyracer-0.11.0/ext/v8/build.rb:42:in `build_with_system_libv8': unable to locate libv8. Please see output for details (RuntimeError)
       from extconf.rb:22:in `<main>'
       The Ruby Racer requires libv8 ~> 3.11.8
       to be present on your system in order to compile
       and link, but it could not be found.
       In order to resolve this, you will either need to manually
       install an appropriate libv8 and make sure that this
       build process can find it. If you install it into the
       standard system path, then it should just be picked up
       automatically. Otherwise, you'll have to pass some extra
       flags to the build process as a hint.
       If you don't want to bother with all that, there is a
       rubygem that will do all this for you. You can add
       following line to your Gemfile:
       gem 'libv8', '~> 3.11.8'
       We hope that helps, and we apologize, but now we have
       to push the eject button on this install.
       thanks,
       The Mgmt.
       Gem files will remain installed in /tmp/build_3srt9ifqtbs6m/vendor/bundle/ruby/1.9.1/gems/therubyracer-0.11.0 for inspection.
       Results logged to /tmp/build_3srt9ifqtbs6m/vendor/bundle/ruby/1.9.1/gems/therubyracer-0.11.0/ext/v8/gem_make.out
       An error occurred while installing therubyracer (0.11.0), and Bundler cannot continue.
       Make sure that `gem install therubyracer -v '0.11.0'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

Gem文件部分

gem 'libv8', '~> 3.11.8'
gem "therubyracer", :platforms => :ruby, :require => 'v8'
group :linux_test do
  #gem "therubyracer", :require => false
  gem "libnotify", :require => false
end
group :production do
  gem "therubyracer-heroku"
  gem "pg"
end

therubyracerlib8 肯定是最新的,我刚刚重新安装了它们。

我该如何解决?

附言Ubuntu 12.1,x64。

最佳答案

查看 Heroku Cedar 上的 Rails 3.1+ Assets 管道 https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar :

therubyracer

If you were previously using therubyracer or therubyracer-heroku, these gems are no longer required and strongly discouraged as these gems use a very large amount of memory.

如果你的开发环境需要 therubyracer gem,把它包在一个组里:

group :development do
  gem 'therubyracer', :platforms => :ruby, :require => 'v8'
end

(Heroku 不会安装只存在于 development 组中的 gem。)

无论如何,将它从下面的 production 组中删除。

关于ruby-on-rails - 在 heroku 安装 therubyracer,未能构建 gem native 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13994772/

相关文章:

ruby - apache、phusion 乘客和内存使用情况

python - 无法从 az cli 部署 python 应用程序

python - Ubuntu、 python : Cannot import python shapely package

ruby-on-rails - 从 Windows-1252 到 UTF-8 的转换中的 "\x9D"到 UTF-8

ruby-on-rails - 如何在 Ruby on Rails 中将数据存储在内存中

ruby-on-rails - Rails 3 和 RJS

Ruby/Watir 在使用 "goto"后卡住了

ruby-on-rails - 启动 Rails 服务器时出错 : warning: Insecure world writable dir/usr in PATH, 模式 040777

Ruby PostgreSQL 教程

bash - 等待具有特定名称的所有进程完成(在 bash 中)