Не могу отправить приложение Heroku - Не удалось установить гем через Bundler - PullRequest
12 голосов
/ 25 января 2012

Вот так выглядит мой Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.1.2'

#gem 'sqlite3'
gem 'mysql2'
gem "rvm", "~> 1.9.2"
gem 'authlogic'
gem "taps", "~> 0.3.23"
gem "paperclip", "~> 2.4.5"
gem 'aws-s3'
gem 'actionmailer'

gem 'will_paginate'

group :assets do
  gem 'sass-rails',   '~> 3.1.5.rc.2'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

group :production do
  gem 'therubyracer-heroku', '~> 0.8.1.pre3'
  gem 'pg'
end

gem 'jquery-rails'

и это вывод из приложения в Heroku:

Counting objects: 307, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (291/291), done.
Writing objects: 100% (307/307), 491.60 KiB | 47 KiB/s, done.
Total 307 (delta 43), reused 0 (delta 0)

-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.1.rc.7
       Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
       Fetching gem metadata from http://rubygems.org/.......
       Installing rake (0.9.2.2)
       Installing multi_json (1.0.4)
       Installing activesupport (3.1.2)
       Installing builder (3.0.0)
       Installing i18n (0.6.0)
       Installing activemodel (3.1.2)
       Installing erubis (2.7.0)
       Installing rack (1.3.6)
       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.1.2)
       Installing actionpack (3.1.2)
       Installing mime-types (1.17.2)
       Installing polyglot (0.3.3)
       Installing treetop (1.4.10)
       Installing mail (2.3.0)
       Installing actionmailer (3.1.2)
       Installing arel (2.2.1)
       Installing tzinfo (0.3.31)
       Installing activerecord (3.1.2)
       Installing activeresource (3.1.2)
       Installing authlogic (3.1.0)
       Installing xml-simple (1.1.1)
       Installing aws-s3 (0.6.2)
       Installing cocaine (0.2.1)
       Installing coffee-script-source (1.2.0)
       Installing execjs (1.3.0)
       Installing coffee-script (2.2.0)
       Installing rack-ssl (1.3.2)
       Installing json (1.6.5) with native extensions
       Installing rdoc (3.12)
       Installing thor (0.14.6)
       Installing railties (3.1.2)
       Installing coffee-rails (3.1.1)
       Installing jquery-rails (1.0.19)
       Installing mysql2 (0.3.11) with native extensions
       Installing paperclip (2.4.5)
       Installing pg (0.12.2) with native extensions
       Using bundler (1.1.rc.7)
       Installing rails (3.1.2)
       Installing rest-client (1.6.7)
       Installing rvm (1.9.2)
       Installing sass (3.1.12)
       Installing sass-rails (3.1.5)
       Installing sequel (3.20.0)
       Installing sinatra (1.0)
       Installing sqlite3 (1.3.5) 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 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_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5 for inspection.
       Results logged to /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5/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_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/source.rb:90:in `block in install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/rubygems_integration.rb:82:in `preserve_paths'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/source.rb:89:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:73:in `block in install_gem_from_spec'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/rubygems_integration.rb:97:in `with_build_args'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:72:in `install_gem_from_spec'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:56:in `block in run'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:55:in `run'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:12:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/cli.rb:220:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor/task.rb:22:in `run'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor.rb:263:in `dispatch'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor/base.rb:386:in `start'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/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.
 !     
 !     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:_my_repo_.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:_my_repo_.git'

Что не так? У меня есть такая же настройка в моем приложении else, и она отлично работает ... Я буду очень благодарен за любую помощь, борясь с этой проблемой весь день ...

РЕДАКТИРОВАТЬ: Также я попытался удалить хранилище и создать новый, но все тот же.

Ответы [ 7 ]

27 голосов
/ 26 января 2012

Просто поместите ваш sqlite3 в группу text / development в Gemfile, добавив thin и pg в группу производственных gemfile:

  1. отредактируйте Gemfile следующим образом:

    gem 'sqlite3', :group => [:development, :test]
    group :production do
      gem 'thin'
      gem 'pg'
    end
    
  2. удалить Gemfile.lock

  3. пробег bundle install --without production
  4. git add .
  5. git commit -am "bundle updating sqlite3"
  6. git push heroku +master
9 голосов
/ 26 января 2012

Итак, после небольшого разговора со сторонниками Heroku, «проблема» была в taps gem - sqlite3 имеет с ней связь.Рабочий раствор:

group :development do
  gem 'taps'
  gem 'rvm'
end
5 голосов
/ 22 ноября 2012

Если вы измените Gemfile, НЕ забывайте

git add .
git commint -m"ufff"

тогда

git push heroku master
2 голосов
/ 26 июля 2012

В Gemfile замените 'gem sqlite3' следующим:

group :development do
gem 'sqlite3'
end
gem 'pg'
2 голосов
/ 26 января 2012

Вы добавили Gemfile в рабочую копию и зафиксировали его в своем локальном хранилище? Может быть, вы продвигаете старую версию Gemfile и Gemfile.lock?

1 голос
/ 26 января 2012

Вам нужно сделать bundle в командной строке в папке вашего проекта.

Это обновит ваш файл Gemfile.lock - вам нужно зафиксировать и этот, и Gemfile, а затем выполнить повторную загрузку в Heroku.

0 голосов
/ 22 октября 2015

У меня была немного уникальная ситуация с гемом 'mailcatcher'.

У меня был установлен гем для всех сред, но я понял, что одной из его зависимостей является sqlite3.Я переместил гем mailcatcher в группу разработчиков, и он решил мою проблему.

...