Heroku正在尝试安装sqlite3 gem,即使它不在gem文件中

Heroku正在尝试安装sqlite3 gem,即使它不在gem文件中,sqlite,heroku,ruby-on-rails-3.1,bundler,Sqlite,Heroku,Ruby On Rails 3.1,Bundler,我第一次尝试在Heroku上部署Rails 3.1应用程序。我将其设置为Cedar堆栈,删除了sqlite3 gem,但当我将代码推送到Heroku时,我得到了以下错误: ----->使用Bundler版本1.1.rc安装依赖项 正在运行:bundle安装--无开发:test--路径供应商/bundle--部署 正在从……获取gem元数据。。。。。。。(……) 安装导轨(3.1.0) 安装带有本机扩展的sqlite3(1.3.4)时,不幸发生了一个致命错误。请将此错误报告给 Bundler问题跟

我第一次尝试在Heroku上部署Rails 3.1应用程序。我将其设置为Cedar堆栈,删除了sqlite3 gem,但当我将代码推送到Heroku时,我得到了以下错误:

----->使用Bundler版本1.1.rc安装依赖项 正在运行:bundle安装--无开发:test--路径供应商/bundle--部署 正在从……获取gem元数据。。。。。。。(……)

安装导轨(3.1.0) 安装带有本机扩展的sqlite3(1.3.4)时,不幸发生了一个致命错误。请将此错误报告给 Bundler问题跟踪程序位于 这样我们就能修好它。 谢谢 /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:483:“在构建扩展中的块中进行救援”:错误:未能构建gem本机 分机。(Gem::Installer::ExtensionBuildError) /usr/local/bin/ruby extconf.rb 正在检查sqlite3.h。。。没有

我不知道bundle install为什么要安装sqlite3。查看我的Gemfile和Gemfile.lock:

Gemfile

source 'http://rubygems.org'

gem 'rails', '3.1.0'

gem 'json'
gem 'pg'
gem 'thin'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
#  gem 'sass-rails', "  ~> 3.1.0"
#  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

gem 'jquery-rails'
Gemfile.lock

GEM   remote: http://rubygems.org/   specs:
    actionmailer (3.1.0)
      actionpack (= 3.1.0)
      mail (~> 2.3.0)
    actionpack (3.1.0)
      activemodel (= 3.1.0)
      activesupport (= 3.1.0)
      builder (~> 3.0.0)
      erubis (~> 2.7.0)
      i18n (~> 0.6)
      rack (~> 1.3.2)
      rack-cache (~> 1.0.3)
      rack-mount (~> 0.8.2)
      rack-test (~> 0.6.1)
      sprockets (~> 2.0.0)
    activemodel (3.1.0)
      activesupport (= 3.1.0)
      bcrypt-ruby (~> 3.0.0)
      builder (~> 3.0.0)
      i18n (~> 0.6)
    activerecord (3.1.0)
      activemodel (= 3.1.0)
      activesupport (= 3.1.0)
      arel (~> 2.2.1)
      tzinfo (~> 0.3.29)
    activeresource (3.1.0)
      activemodel (= 3.1.0)
      activesupport (= 3.1.0)
    activesupport (3.1.0)
      multi_json (~> 1.0)
    arel (2.2.1)
    bcrypt-ruby (3.0.1)
    builder (3.0.0)
    daemons (1.1.4)
    erubis (2.7.0)
    eventmachine (0.12.10)
    execjs (1.2.9)
      multi_json (~> 1.0)
    hike (1.2.1)
    i18n (0.6.0)
    jquery-rails (1.0.14)
      railties (~> 3.0)
      thor (~> 0.14)
    json (1.6.1)
    mail (2.3.0)
      i18n (>= 0.4.0)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    mime-types (1.16)
    multi_json (1.0.3)
    pg (0.11.0)
    polyglot (0.3.2)
    rack (1.3.3)
    rack-cache (1.0.3)
      rack (>= 0.4)
    rack-mount (0.8.3)
      rack (>= 1.0.0)
    rack-ssl (1.3.2)
      rack
    rack-test (0.6.1)
      rack (>= 1.0)
    rails (3.1.0)
      actionmailer (= 3.1.0)
      actionpack (= 3.1.0)
      activerecord (= 3.1.0)
      activeresource (= 3.1.0)
      activesupport (= 3.1.0)
      bundler (~> 1.0)
      railties (= 3.1.0)
    railties (3.1.0)
      actionpack (= 3.1.0)
      activesupport (= 3.1.0)
      rack-ssl (~> 1.3.2)
      rake (>= 0.8.7)
      rdoc (~> 3.4)
      thor (~> 0.14.6)
    rake (0.9.2)
    rdoc (3.9.4)
    sprockets (2.0.0)
      hike (~> 1.2)
      rack (~> 1.0)
      tilt (~> 1.1, != 1.3.0)
    thin (1.2.11)
      daemons (>= 1.0.9)
      eventmachine (>= 0.12.6)
      rack (>= 1.0.0)
    thor (0.14.6)
    tilt (1.3.3)
    treetop (1.4.10)
      polyglot
      polyglot (>= 0.3.1)
    tzinfo (0.3.29)
    uglifier (1.0.3)
      execjs (>= 0.3.0)
      multi_json (>= 1.0.2)

PLATFORMS   ruby

DEPENDENCIES   jquery-rails   json   pg   rails (= 3.1.0)   thin   uglifier

如何修复它?

尝试删除Gemfile.lock并运行Bundle Install、commit和push

我也有同样的问题,zoltarSpeaks的解决方案为我修复了它。在阅读本文后,我安装了taps gem,这篇文章指出,将本地sqlite3推送到生产postgresql是必要的。原来我根本不需要这个宝石,但这显然是个问题。删除了参考,捆绑包更新,所有系统都运行。

当我遇到问题时,发现我忘记在
捆绑包安装后提交更改。啊<代码>git状态
应指示gem文件的未老化更改。

不卸载sqlite3 gem for Heroku的简单解决方案:

添加到文件:

group :production do
gem 'pg', '0.17.1' #or version of pg you want
gem 'rails_12factor', '0.0.2' #Heroku static assets for image and css
检查您是否有:

end 
end
在文件中代码的末尾

然后保存文件并运行bundle安装

$ bundle install --without production
而不是承诺

$ git commit -a -m "Update Gemfile.lock for Heroku"


仅此而已。你只会收到一些警告,这些警告很容易修复。

所以,投票被否决的聪明人可以解释为什么?我遇到了完全相同的问题,我在本地使用“pg”没有问题,但Heroku仍在尝试安装sqlite,因此出错。但是,我可以看到我的gemfile.lock中有以下内容:
sqlite3(1.3.4)sqlite3ruby(1.3.3)sqlite3(>=1.3.3)
。这些显然是导致问题的原因,但我不明白为什么它们仍然进入我的gemfile.lock;无论我执行多少次
捆绑更新
或删除锁文件并从头开始。有什么建议吗?我已经通过从我的gem文件中删除
taps
gem修复了我的问题。忘记了我在实际的Gemfile中不需要它,只是在我的gemset中使用它。删除
taps
删除了my Gemfile.lock中的sqlite依赖项。谢谢Pete,删除taps(在我的情况下,是taps-taps)对我很有效:)您使用windows进行开发吗?
$ git push heroku master