【问题标题】:Heroku installing sqlite3 even though it is not a dependecyHeroku 安装 sqlite3,即使它不是依赖项
【发布时间】:2012-10-04 06:04:57
【问题描述】:

我正在尝试将我的应用程序部署到 Heroku,但它不断被以下输出拒绝。

waitup$git push staging master
Counting objects: 4184, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1033/1033), done.
Writing objects: 100% (4184/4184), 1.11 MiB | 494 KiB/s, done.
Total 4184 (delta 3069), reused 4184 (delta 3069)

-----> 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/ --deployment
       Fetching gem metadata from http://rubygems.org/.......
       Fetching https://github.com/stripe/stripe-ruby
       Installing rake (0.8.7)
       Installing abstract (1.0.0)
       Installing activesupport (3.0.4)
       Installing builder (2.1.2)
       Installing i18n (0.5.0)
       Installing activemodel (3.0.4)
       Installing erubis (2.6.6)
       Installing rack (1.2.2)
       Installing rack-mount (0.6.14)
       Installing rack-test (0.5.7)
       Installing tzinfo (0.3.27)
       Installing actionpack (3.0.4)
       Installing mime-types (1.16)
       Installing polyglot (0.3.1)
       Installing treetop (1.4.9)
       Installing mail (2.2.19)
       Installing actionmailer (3.0.4)
       Installing bcrypt-ruby (2.1.4) with native extensions
       Installing orm_adapter (0.0.5)
       Installing warden (1.0.4)
       Installing devise (1.3.4)
       Installing formtastic (1.2.3)
       Installing has_scope (0.5.0)
       Installing responders (0.6.4)
       Installing inherited_resources (1.2.2)
       Installing will_paginate (3.0.pre2)
       Installing inherited_views (0.0.2)
       Installing arel (2.0.9)
       Installing activerecord (3.0.4)
       Installing meta_search (1.0.5)
       Installing activeresource (3.0.4)
       Using bundler (1.2.1)
       Installing thor (0.14.6)
       Installing railties (3.0.4)
       Installing rails (3.0.4)
       Installing sass (3.1.2)
       Installing activeadmin (0.2.2)
       Installing addressable (2.2.6)
       Installing authlogic (2.1.6)
       Installing celerity (0.8.8)
       Installing culerity (0.2.15)
       Installing nokogiri (1.4.4) with native extensions
       Installing ffi (0.6.3) with native extensions
       Installing childprocess (0.1.7)
       Installing json_pure (1.5.1)
       Installing rubyzip (0.9.4)
       Installing selenium-webdriver (0.1.3)
       Installing xpath (0.1.3)
       Installing capybara (0.4.1.2)
       Installing configuration (1.2.0)
       Installing cookiejar (0.3.0)
       Installing diff-lcs (1.1.2)
       Installing json (1.5.1) with native extensions
       Installing gherkin (2.3.7) with native extensions
       Installing term-ansicolor (1.0.5)
       Installing cucumber (0.10.2)
       Installing cucumber-rails (0.3.1)
       Installing daemons (1.1.6)
       Installing database_cleaner (0.6.4)
       Installing hiredis (0.3.2) with native extensions
       Installing em-hiredis (0.1.0)
       Installing escape_utils (0.2.4) with native extensions
       Installing eventmachine (0.12.10) with native extensions
       Installing em-http-request (0.3.0) with native extensions
       Installing thin (1.3.1) with native extensions
       Installing faye (0.7.1)
       Installing launchy (0.4.0)
       Installing rest-client (1.6.3)
       Installing heroku (2.2.8)
       Installing jquery-rails (1.0.7)
       Installing jwt (0.1.3)
       Installing multi_json (1.0.3)
       Installing mysql2 (0.2.7) with native extensions
       Installing rspec-core (2.5.1)
       Installing rspec-expectations (2.5.0)
       Installing rspec-mocks (2.5.0)
       Installing rspec (2.5.0)
       Installing rspec-rails (2.5.0)
       Installing seed-fu (2.0.1)
       Installing sequel (3.20.0)
       Installing sinatra (1.0)
       Installing spork (0.8.4) with native extensions
       Installing sqlite3 (1.3.4) with native extensions
       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 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_qlnbqtp08z3t/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.4 for inspection.
       Results logged to /tmp/build_qlnbqtp08z3t/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.4/ext/sqlite3/gem_make.out
       An error occurred while installing sqlite3 (1.3.4), and Bundler cannot continue.
       Make sure that `gem install sqlite3 -v '1.3.4'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !     
 !     Detected sqlite3 gem which is not supported on Heroku.
 !     http://devcenter.heroku.com/articles/how-do-i-use-sqlite3-for-development
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

To git@heroku.com:waiterd2-staging.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:waiterd2-staging.git'

显然,sqlite3 gem 是这里的问题。奇怪的是,它没有作为依赖项包含在我的 Gemfile 或 Gemfile.lock 中。

我的 gemfile 看起来像这样:

source 'http://rubygems.org'

gem 'rails', '3.1.0'

gem 'pg'
gem 'thin'
gem 'authlogic', '3.1.3'
gem 'twilio-ruby'
gem 'heroku'
gem 'activeadmin', :git => 'https://github.com/gregbell/active_admin.git'
gem 'stripe', :git => 'https://github.com/stripe/stripe-ruby'
gem 'faye'

group :assets do
    gem 'less'
    gem 'bourbon'
    gem 'therubyracer'
    gem 'sass-rails'
    gem 'coffee-rails'
    gem 'uglifier'
end

这里有几件事很突出。 Heroku 安装的 authlogic gem 不是 Gemfile 中指定的。我怀疑 authlogic gem 的唯一原因是因为它将 sqlite3 列为开发依赖项。不过这应该没关系。

当我在本地机器上运行 Heroku 输出中列出的确切命令时,没有安装 sqlite3 gem。

我尝试了许多在 StackOverflow 和其他地方找到的建议,例如删除 Gemfile.lock 文件并再次运行捆绑程序。这些都没有奏效。 Heroku 仍然安装了错误版本的 authlogic 并尝试安装 sqlite3。

如何让 Heroku 停止尝试安装 sqlite3 gem?

非常感谢您的帮助!

【问题讨论】:

  • 你能发布你的Gemfile.lock吗? @MaurícioLinhares Rails 3 默认将 SQLite 用于新项目,但它通过将其添加到 Gemfile 来实现这一点。通过指定gem 'rails',SQLite 和任何其他数据库适配器都不会自动添加到依赖关系图中。
  • 你在推正确的分支吗?您的 Gemfile 指定 gem 'rails', '3.1.0'(无论如何应该是 3.1.8),但 Bundler 看到的是 rails (3.0.4)
  • 从 gemfile 中删除 gem 'sqlite3' .heroku 使用 postgresql ..sooo 使用 gem 'pg'
  • sadiqxs:他特别说他的 gemfile 中没有 sqlite。
  • 你应该检查 Gemfile.lock 文件,也许某些 gem 依赖于 sqlite3。另一条评论是您应该将 gem 'heroku' 放在 group :development 中,以防止它在生产模式下安装,因为这不是必需的:)。

标签: ruby-on-rails ruby-on-rails-3 heroku sqlite


【解决方案1】:

问题变得非常简单。我将错误的分支推送到 Heroku,所以我解决问题的尝试显然无效。

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2011-12-08
    • 2021-03-04
    • 2022-01-15
    • 2020-10-17
    • 2017-11-10
    • 2022-01-27
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多