HEROKU - 无法运行git push heroku master

27

我运行命令

heroku create --stack cedar
git push heroku master

但是它给了我一个错误:

> Counting objects: 144, done. Delta compression using up to 2 threads.
> Compressing objects: 100% (128/128), done. Writing objects: 100%
> (144/144), 50.16 KiB, done. Total 144 (delta 23), reused 0 (delta 0)
> 
> -----> Heroku receiving push
> -----> Ruby/Rails app detected
> -----> Installing dependencies using Bundler version 1.1.rc
>        Running: bundle install --without development:test --path vendor/bundle --deployment
>        Fetching gem metadata from http://rubygems.org/.......
>        Installing rake (0.9.2.2)
>        Installing multi_json (1.0.3)
>        Installing activesupport (3.1.1)
>        Installing builder (3.0.0)
>        Installing i18n (0.6.0)
>        Installing activemodel (3.1.1)
>        Installing erubis (2.7.0)
>        Installing rack (1.3.5)
>        Installing rack-cache (1.1)
>        Installing rack-mount (0.8.3)
>        Installing rack-test (0.6.1)
>        Installing hike (1.2.1)
>        Installing tilt (1.3.3)
>        Installing sprockets (2.0.3)
>        Installing actionpack (3.1.1)
>        Installing mime-types (1.17.2)
>        Installing polyglot (0.3.2)
>        Installing treetop (1.4.10)
>        Installing mail (2.3.0)
>        Installing actionmailer (3.1.1)
>        Installing arel (2.2.1)
>        Installing tzinfo (0.3.30)
>        Installing activerecord (3.1.1)
>        Installing activeresource (3.1.1)
>        Installing coffee-script-source (1.1.2)
>        Installing execjs (1.2.9)
>        Installing coffee-script (2.2.0)
>        Installing rack-ssl (1.3.2)
>        Installing json (1.6.1) with native extensions
>        Installing rdoc (3.11)
>        Installing thor (0.14.6)
>        Installing railties (3.1.1)
>        Installing coffee-rails (3.1.1)
>        Installing jquery-rails (1.0.16)
>        Installing pg (0.11.0) with native extensions
>        Using bundler (1.1.rc)
>        Installing rails (3.1.1)
>        Installing sass (3.1.10)
>        Installing sass-rails (3.1.4)
>        **Installing sqlite3 (1.3.4) with native extensions Unfortunately, a fatal error has occurred. Please report this error to
> the Bundler issue tracker at
> https://github.com/carlhuda/bundler/issues so that we can fix it.
> Thanks!**
>        /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native
> extension. (Gem::Installer::ExtensionBuildError)
>        /usr/local/bin/ruby extconf.rb
>        checking for sqlite3.h... no
>        sqlite3.h is missing. Try 'port install sqlite3 +universal'
>        or 'yum install sqlite3-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_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.4
> for inspection.
>        Results logged to /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.4/ext/sqlite3/gem_make.out
>        from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:486:in `block in build_extensions'
>        from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:446:in `each'
>        from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:446:in `build_extensions'
>        from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:198:in `install'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/source.rb:90:in
> `block in install'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/rubygems_integration.rb:78:in
> `preserve_paths'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/source.rb:89:in
> `install'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/installer.rb:73:in
> `block in install_gem_from_spec'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/rubygems_integration.rb:93:in
> `with_build_args'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/installer.rb:72:in
> `install_gem_from_spec'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/installer.rb:56:in
> `block in run'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/installer.rb:55:in
> `run'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/installer.rb:12:in
> `install'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/cli.rb:219:in
> `install'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/vendor/thor/task.rb:22:in
> `run'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/vendor/thor.rb:263:in
> `dispatch'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/lib/bundler/vendor/thor/base.rb:386:in
> `start'
>        from /tmp/build_272b7nu18wwh5/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc/bin/bundle:13:in
> `<top (required)>'
>        from vendor/bundle/ruby/1.9.1/bin/bundle:19:in `load'
>        from vendor/bundle/ruby/1.9.1/bin/bundle:19:in `<main>'  !  !     Failed to install gems via Bundler.  !  !     Heroku push rejected,
> failed to compile Ruby/rails app
> 
> To git@heroku.com:falling-ice-5948.git  ! [remote rejected] master ->
> master (pre-receive hook declined) error: failed to push some refs to
> 'git@heroku.com:falling-ice-5948.git'

编辑 - 这篇文章可能非常有帮助:sqlite3-ruby安装错误


7个回答

60
将此添加到您的Gemfile文件中,
group :production do
  gem 'pg'
end
group :development, :test do
  gem 'sqlite3'
end

然后执行bundle,再将其重新推送到Heroku。在Heroku上不能使用sqlite3,这是错误的原因。


谢谢,但我仍然有同样的问题。当config/application.rb文件中的config.assets..enabled = true时,我的应用程序无法工作,当我将其更改为false时,它可以工作,但不使用我的.css文件。我该怎么办?也许存在特殊的数组,我必须添加我的CSS文件吗? - ruhungry
这也没有解决我的问题。 - Mike
1
我的答案是针对原帖中关于sqlite3安装失败的错误所提出的解决方案。如有进一步问题,请开新的问题进行讨论。 - John Beynon

41
如果你在从Gemfile中移除sqlite3后(或者只将其用于开发环境),问题仍然存在,那么原因是Heroku没有更新文件,因为它依赖于Git。
简而言之:
git add Gemfile
git commit -m "Removed sqlite3 from Gemfile"
git push heroku master

我在这个问题上头痛了一段时间,后来才意识到之所以更改没有生效是因为我没有将它们提交到 Heroku。


我在移除依赖项后不得不执行 git add Gemfile.lock,但这对我起作用了。谢谢。 - Paul Bailey

13

这是我在尝试了无数论坛中建议的所有修复方法一整天之后找到的解决方法! 首先,如果您正在使用《Rails教程》书籍或在线教程,则需要转到第二版(在线版本可在http://ruby.railstutorial.org/上找到beta版)。

打开编辑器并将以下行添加到您的Gemfile文件中:

group :production do    
    gem 'pg', '0.12.2'  
end  
group :development do  
    gem 'sqlite3', '1.3.4'  
end

现在你还需要将修改后的Gemfile提交到Heroku,因此下一步按顺序执行。

git add Gemfile  
git commit -m "Put Sqlite3 into development in the Gemfile"  
git push heroku master  

4
如果你在应用tibbon和animuson的说明后仍然无法正常工作(就像我一样),请尝试在Gemfile中注释掉“gem 'sqlite3'”这一行,然后再次添加-提交-推送。

稍微解释一下... 你不想在gemfile中出现任何“冲突”,即移除或注释掉gemfile顶部的“原始”gem sqlite3(在创建应用程序/脚手架时插入)。这个gem sqlite3行与上面的条件语句冲突或覆盖。而且,如果这还不是问题的话,你将会有gem sqlite3gem 'sqlite3','1.3.4'之间的版本冲突。 - Flak DiNenno

0

你可以使用稍微不同的语法来解决这个问题:

gem 'pg', group: :production
gem 'sqlite3', group: :development 

0
如果您在Gemfile中引用了以下内容: # Use sqlite3 as the database for Active Record gem 'sqlite3' 请确保将其注释或替换为上面建议的代码。否则,如果保留此引用,则仍将遇到相同的错误。该内容与编程有关。

0

我按照这些说明操作,但在我的情况下,我必须将更新的Gemfile.lock文件添加到版本控制中。因此,我使用了“-a”标志来添加Gemfile文件和Gemfile.lock文件。

git commit -am“将Sqlite3放入Gemfile的开发环境中,并添加了更新的Gemfile.lock”
git push heroku master


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接