12

我试图将我的 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'

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

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

4

3 回答 3

23

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

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

group :production do
  gem 'pg'
end

于 2012-11-25T16:03:11.573 回答
7

有同样的问题。意识到我没有将更改提交给 Git。一旦我提交它并将其重新推送到 Heroku,它就可以毫无问题地工作。

于 2014-01-28T00:05:27.433 回答
1

以下内容在我的 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

IE

brew install postgresql
gem install pg

然后将 Gemfile 和 Gemfile.lock 提交到本地 master。

然后git push heroku master像魅力一样工作。

于 2014-10-20T17:33:59.357 回答