安装sqlite3时发生导轨应用程序错误导致Heroku错误,并且Bundler无法继续

我试图将我的rails应用程序推送到heroku并收到如下错误:

Counting objects: 177, done. Delta compression using up to 2 threads. Compressing objects: 100% (161/161), done. Writing objects: 100% (177/177), 44.73 KiB, done. Total 177 (delta 39), reused 0 (delta 0) -----> Heroku receiving push -----> Ruby/Rails app detected -----> Installing dependencies using Bundler version 1.2.1 Running: bundle install --without development:test --path vendor/bundle - -binstubs bin/ Fetching gem metadata from Fetching gem metadata from Installing rake (10.0.2) Installing i18n (0.6.1) Installing multi_json (1.3.7) Installing activesupport (3.2.8) Installing builder (3.0.4) Installing activemodel (3.2.8) Installing erubis (2.7.0) Installing journey (1.0.4) Installing rack (1.4.1) Installing rack-cache (1.2) Installing rack-test (0.6.2) Installing hike (1.2.1) Installing tilt (1.3.3) Installing sprockets (2.1.3) Installing actionpack (3.2.8) Installing mime-types (1.19) Installing polyglot (0.3.3) Installing treetop (1.4.12) Installing mail (2.4.4) Installing actionmailer (3.2.8) Installing arel (3.0.2) Installing tzinfo (0.3.35) Installing activerecord (3.2.8) Installing activeresource (3.2.8) Using bundler (1.2.1) Installing coffee-script-source (1.4.0) Installing execjs (1.4.0) Installing coffee-script (2.2.0) Installing rack-ssl (1.3.2) Installing json (1.7.5) with native extensions Installing rdoc (3.12) Installing thor (0.16.0) Installing railties (3.2.8) Installing coffee-rails (3.2.2) Installing jquery-rails (2.1.3) Installing rails (3.2.8) Installing sass (3.2.3) Installing sass-rails (3.2.5) Installing sqlite3 (1.3.6) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native ex tension. /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_2pense1pvyqut/vendor/bundle /ruby/1.9.1/gems/sqlite3-1.3.6 for inspection. Results logged to /tmp/build_2pense1pvyqut/vendor/bundle/ruby/1.9.1/gems/ sqlite3-1.3.6/ext/sqlite3/gem_make.out An error occurred while installing sqlite3 (1.3.6), and Bundler cannot co ntinue. Make sure that `gem install sqlite3 -v '1.3.6'` succeeds before bundling. ! ! Failed to install gems via Bundler. ! ! Heroku push rejected, failed to compile Ruby/rails app 

=========================================

我的GemFile如下:

=======================================

 gem 'rails', '3.2.8' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' group :production do gem 'pg' end group :development, :test do gem 'taps' gem 'rvm' gem 'rspec-rails','2.0.1' gem 'annotate' gem 'faker','0.3.1' gem 'rspec','2.0.1' gem 'webrat','0.7.1' gem 'spork','0.8.4' gem 'factory_girl_rails','1.0' end gem 'rake', '~> 10.0.1' #gem 'yaml_db' # 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', :platforms => :ruby gem 'uglifier', '>= 1.0.3' end gem 'jquery-rails' # 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 'debugger' 

=======================================

我尝试了几乎所有在线提供的解决方案,但仍然没有运气。 任何帮助将不胜感激。

我在上面的代码中没有看到它,但猜测你可能在gem 'sqlite3'的顶部有你的gem’sqlite3’,所以它在所有环境中使用。 Heroku不支持Sqlite,因此它不在生产组之外。 尝试以下操作,以便您可以使用sqlite进行开发和测试,然后在Heroku上使用pg

 group :development, :test do gem 'sqlite3' end group :production do gem 'pg' end 

有同样的问题。 意识到我没有将我的更改提交给Git。 一旦我提交并重新推送到Heroku,它就没有问题。

以下在我的Mac上为我工作:

group :development, :test do gem 'sqlite3' end group :production do gem 'pg' end

然后

bundle install

但是这引发了这个错误:

can't find the 'libpq-fe.h header *** extconf.rb failed ***

使用Homebrew解决了这个错误,如下所述 – https://stackoverflow.com/a/20482221/2665896

 brew install postgresql gem install pg 

然后将Gemfile和Gemfile.lock提交给本地主服务器。

然后git push heroku master就像一个魅力。