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应用程序
我遇到的一个问题导致了几个小时的头痛,是'水龙头'的宝石。这是造成几乎完全一样的错误我,直到我把它变成了“发展”组:
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
上面的错误似乎是关于sqlite3。据我所知,group:production do是为生产中使用的特定宝石,不用于测试。在这种情况下,你会安装生产的特定版本的sqlite3吗?或者你的意思是你会指定所有已安装的宝石并将其放入生产组? – 2012-04-07 01:17:42
对,你会得到一个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
是新的宝石,你应该使用。
试过但它没有工作:( – 2012-04-07 01:53:16
这对我有用。你确定将Gemfile的更改推送到你的项目的git存储库 – kachilous 2012-04-10 22:08:14
不要忘记提交任何更改,这听起来很明显,但我开始编辑和保存,我失去了两个小时,直到我意识到我还没有任何承诺!提交! – 2012-11-06 15:39:07
看看你试图推动哪个分支。 在我来说,我工作的Dev分支,并试图用推:
$ git push heroku master
什么混帐也正在推动我的主人分支Heroku的,但我的主分支使用sqlite3的,造成这个奇怪的错误。
尝试做做:
$ git push heroku [name_of_your_branch]:master
谢谢!这对我有用 – 2012-10-26 17:46:41
这也是一个很好的做法,以便在右手边指定分支的名称,结肠的一侧。 – rodrigoalves 2013-02-09 19:54:39
看看你的database.yml。可能是问题。 – 2012-04-07 03:28:13