我在同一主题上发现了一些帖子(
here’s一个),并认为我做了正确的更改,但我仍然无法解决问题.
完成捆绑安装后,我推送到heroku,当它到达sqlite3安装时出现以下错误.
Installing sqlite3 (1.3.5) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /usr/local/bin/ruby extconf.rb checking for sqlite3.h... no sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite-devel' and check your shared library search path (the location where your sqlite3 shared library is located). *** 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-sqlite3-dir --without-sqlite3-dir --with-sqlite3-include --without-sqlite3-include=${sqlite3-dir}/include --with-sqlite3-lib --without-sqlite3-lib=${sqlite3-dir}/lib --enable-local --disable-local Gem files will remain installed in /tmp/build_13nbwv3kitbub/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5 for inspection. Results logged to /tmp/build_13nbwv3kitbub/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out An error occured while installing sqlite3 (1.3.5),and Bundler cannot continue. Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling. ! ! Failed to install gems via Bundler. ! ! Heroku push rejected,Failed to compile Ruby/rails app To git@heroku.com:morning-dawn-1372.git ! [remote rejected] master -> master (pre-receive hook declined) error: Failed to push some refs to 'git@heroku.com:morning-dawn-1372.git'
我的Gemfile看起来像这样:
source 'https://rubygems.org' gem 'rails','3.2.2' # Bundle edge Rails instead: # gem 'rails',:git => 'git://github.com/rails/rails.git' gem 'json' group :development,:test do gem 'sqlite3-ruby',:require => 'sqlite3' gem 'sqlite3','1.3.5' end # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails','~> 3.2.3' gem 'coffee-rails','~> 3.2.1' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer' gem 'uglifier','>= 1.0.3' end gem 'jquery-rails' group :production do gem 'pg','0.12.2' end # To use ActiveModel has_secure_password # gem 'bcrypt-ruby','~> 3.0.0' # To use Jbuilder templates for JSON # gem 'jbuilder' # Use unicorn as the app server # gem 'unicorn' # Deploy with Capistrano # gem 'capistrano' # To use debugger # gem 'ruby-debug'
看起来我有两个
Using sqlite3 (1.3.5) Using sqlite3-ruby (1.3.3)
在我的系统上.不确定这是否是一个问题,但解释了为什么我在gemfile中排除了这两个问题.
环境信息:
$ruby -v ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-cygwin] $rails -v Rails 3.2.2
解决方法
运行bundle命令,然后确保在推送到Heroku之前将Gemfile和Gemfile.lock都检入repo.