Heroku推送 - Git推送到Heroku的错误

问题描述:

当我尝试执行推送到heroku(git push heroku master)的git时,出现错误。我在雪松堆栈,我的Gemfile指定sqlite 1.3.5。这是错误:Heroku推送 - Git推送到Heroku的错误

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_3umr292rjcdek/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5 for inspection. 
    Results logged to /tmp/build_3umr292rjcdek/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. 

! !无法通过Bundler安装宝石。 ! ! Heroku推拒绝,未能编译Ruby/rails应用程序

+0

看看你的database.yml。可能是问题。 – 2012-04-07 03:28:13

我遇到的一个问题导致了几个小时的头痛,是'水龙头'的宝石。这是造成几乎完全一样的错误我,直到我把它变成了“发展”组:

group :production do 
    gem 'taps' 
    gem 'pg' 
end 

不知道这是直接适用于你,但它产生的sqlite3的错误,直到我把水龙头到:生产。希望它会帮助某人。

编辑:@cloneofsnake:我没有足够的代表评论你的答案,但我看到你的Gemfile中有'tap'gem。要么摆脱它,要么把它放在生产组里;水龙头显然有一些依赖sqlite3。我已经将sqlite3换成了pg,但是我得到了和你一样的错误,直到我将“水龙头”转移到生产中。

确保您在生产中拥有必要的宝石。我最近自己也遇到了这个问题。也可以尝试使用gem'pg'(POSTGRESQL)而不是sqlite作为Heroku使用的。

如:

group :production do 
    gem 'pg' 
    gem 'carrierwave' 
    gem 'rmagick' 
    gem 'heroku' 
    gem 'git-rails' 
    gem "jquery-rails" 
    gem 'hoe', '~> 1.5.1' 
    gem "RedCloth" 
    gem 'i18n' 
end 
+0

上面的错误似乎是关于sqlite3。据我所知,group:production do是为生产中使用的特定宝石,不用于测试。在这种情况下,你会安装生产的特定版本的sqlite3吗?或者你的意思是你会指定所有已安装的宝石并将其放入生产组? – 2012-04-07 01:17:42

+0

对,你会得到一个sqlite错误,因为Heroku使用PostgreSQL。你可以使用sqlite进行本地开发,当你推到Heroku时,你的迁移会自动映射到PostgreSQL。因此,将gem'pg'添加到生产中,将您的应用程序推到Heroku上,然后使用:“heroku run rake db:migrate”在Heroku上迁移。 – 2012-04-07 01:28:37

的Heroku是告诉你,你不能编译的Heroku平台上的sqlite3-ruby宝石。

您可能希望将sqlite3-ruby gem移动到Heroku中默认未安装的组中。

gem "rails" 

group :development, :test do 
    gem "sqlite3-ruby", :require => "sqlite3" 
end 

group :production do 
    gem "pg" 
end 

更新:它出现在宝石sqlite3-ruby是老人和sqlite3是新的宝石,你应该使用。

+0

试过但它没有工作:( – 2012-04-07 01:53:16

+0

这对我有用。你确定将Gemfile的更改推送到你的项目的git存储库 – kachilous 2012-04-10 22:08:14

+0

不要忘记提交任何更改,这听起来很明显,但我开始编辑和保存,我失去了两个小时,直到我意识到我还没有任何承诺!提交! – 2012-11-06 15:39:07

看看你试图推动哪个分支。 在我来说,我工作的Dev分支,并试图用推:

$ git push heroku master 

什么混帐也正在推动我的主人分支Heroku的,但我的主分支使用sqlite3的,造成这个奇怪的错误。

尝试做做:

$ git push heroku [name_of_your_branch]:master 
+0

谢谢!这对我有用 – 2012-10-26 17:46:41

+0

这也是一个很好的做法,以便在右手边指定分支的名称,结肠的一侧。 – rodrigoalves 2013-02-09 19:54:39