2012-04-07 2 views
2

Ich bekomme einen Fehler, wenn ich versuche, einen git Push Heroku (git push heroku Master) zu tun. Ich bin auf Zedernholz und mein Gemfile spezifiziert sqlite 1.3.5. Hier ist der Fehler:Heroku Push - Fehler mit Git Push zu 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. 

! ! Fehler beim Installieren von Edelsteinen über Bundler. ! ! Heroku Push abgelehnt, nicht kompiliert Ruby/Rails App

+0

Sehen Sie sich Ihre database.yml. Könnte das Problem sein. –

Antwort

5

Ein Problem, das Stunden Kopfschmerzen verursacht hat, war mit dem "taps" Juwel. Es verursacht wurde so ziemlich genau die gleichen Fehler für mich, bis ich es in die ‚Entwicklung‘ Gruppe bewegte:

group :production do 
    gem 'taps' 
    gem 'pg' 
end 

nicht sicher, ob dies direkt für Sie, aber es produzierte sqlite3 Fehler, bis ich zapft setzen: Produktion. Hoffentlich hilft es jemandem.

BEARBEITEN: @cloneofsnake: Ich habe nicht genug rep, um Ihre Antwort zu kommentieren, aber ich sehe, dass Sie den "taps" Edelstein in Ihrem Gemfile haben. Entweder loswerden oder in die Produktionsgruppe stellen; taps hat anscheinend einige Abhängigkeiten von sqlite3. Ich hatte sqlite3 bereits für pg aussortiert, aber ich bekam den gleichen Fehler wie du, bis ich die Produktion auf "Taps" umstellte.

0

Stellen Sie sicher, dass Sie die notwendigen Edelsteine ​​in der Produktion haben. Ich hatte dieses Problem kürzlich selbst. Versuchen Sie auch, 'pg' (POSTGRESQL) anstelle von sqlite zu verwenden, da das Heroku verwendet.

zB:

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 
+0

Der obige Fehler scheint über sqlite3 zu sein. So wie ich es verstehe, ist Gruppe: Produktion es, bestimmte Edelsteine ​​für die Produktion zu ermöglichen, die nicht im Test verwendet werden. Würden Sie in diesem Fall eine bestimmte Version von sqlite3 für die Produktion installieren? Oder meinst du, du würdest alle installierten Edelsteine ​​spezifizieren und sie in eine Produktionsgruppe bringen? –

+0

Richtig, Sie erhalten einen SQLite-Fehler, weil Heroku PostgreSQL verwendet. Sie können lokal mit sqlite entwickeln und wenn Sie zu Heroku wechseln, werden Ihre Migrationen automatisch auf PostgreSQL gemappt. Also füge gem 'pg' zur Produktion hinzu, schiebe deine App auf Heroku und benutze dann: "heroku run rake db: migrate" um auf Heroku zu migrieren. –

8

Heroku sagt Ihnen, dass Sie die sqlite3-ruby Juwel auf der Heroku Plattform nicht zusammenstellen können.

Sie können den Edelstein in eine Gruppe verschieben, die nicht standardmäßig auf Heroku installiert ist.

gem "rails" 

group :development, :test do 
    gem "sqlite3-ruby", :require => "sqlite3" 
end 

group :production do 
    gem "pg" 
end 

Update: Es erscheint der Edelstein sqlite3-ruby alt ist und die sqlite3 ist das neue Juwel Sie stattdessen verwenden sollten.

+0

Versucht dies, aber es hat nicht funktioniert :( –

+0

Dies funktionierte für mich. Haben Sie sicher, die Änderungen der Gemfile auf das Git-Repository für Ihr Projekt – kachilous

+0

zu schieben Und vergessen Sie nicht, eine Änderung zu begehen. Es klingt ziemlich offensichtlich, aber ich begann zu bearbeiten und zu speichern, und ich verlor zwei Stunden, bis ich merkte, dass ich nichts unternommen hatte! Commit! –

4

Werfen Sie einen Blick auf den Zweig, den Sie schieben möchten. In meinem Fall habe ich auf dev Zweig arbeitete, und zu versuchen, mit schieben:

$ git push heroku master 

Was git hat sich mein Herr Zweig Heroku drängen, aber mein Hauptzweig wurde mit sqlite3, diese seltsame Fehler verursacht.

versuchen Sie tun:

$ git push heroku [name_of_your_branch]:master 
+0

Danke! Das funktionierte für mich –

+0

Es ist auch eine gute Praxis, den Namen des Zweigs immer in der rechten Hand anzugeben. Seite des Dickdarms. – rodrigoalves