2016-05-01 4 views
2

Ich hatte kürzlich Probleme, meine Rails-App auf Heroku zu installieren. In der Vergangenheit hatte ich Apps auf Heroku ohne Probleme bereitgestellt, aber Heroku unterstützt Ruby 2.0.0 nicht mehr. Sie schlagen vor, ruby "2.2.4" zu der Gemfile hinzuzufügen, was ich getan habe. Der Beginn meines Gemfile ist wie folgt:Heroku, Bundler schlägt bei fehlenden Abhängigkeiten fehl

source 'https://rubygems.org' 
ruby "2.2.4" 

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.0' 
# Use pg as the database for Active Record 
gem 'pg' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.1.0' 
# See https://github.com/sstephenson/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 
... 

Also, ich habe kein Problem bundle install mit Version 1.7.8 auf meinem Computer laufen. Ich kann meine App sogar im Produktionsmodus ausführen. Aber wenn ich versuche, die App auf Heroku zu implementieren, ich diese:

-----> Ruby app detected 
-----> Compiling Ruby/Rails 
-----> Using Ruby version: ruby-2.2.4 
-----> Installing dependencies using bundler 1.11.2 
     Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment 
     Fetching gem metadata from https://rubygems.org/........... 
     Fetching version metadata from https://rubygems.org/... 
     Fetching dependency metadata from https://rubygems.org/.. 
     Using rake 10.4.2 
     Installing i18n 0.7.0 
     Installing minitest 5.4.3 
     Installing json 1.8.3 with native extensions 
     Installing thread_safe 0.3.4 
     Installing builder 3.2.2 
     Installing erubis 2.7.0 
     Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES 
     section: 'mini_portile2' 
     Bundler Output: Fetching gem metadata from https://rubygems.org/........... 
     Fetching version metadata from https://rubygems.org/... 
     Fetching dependency metadata from https://rubygems.org/.. 
     Using rake 10.4.2 
     Installing i18n 0.7.0 
     Installing minitest 5.4.3 
     Installing json 1.8.3 with native extensions 
     Installing thread_safe 0.3.4 
     Installing builder 3.2.2 
     Installing erubis 2.7.0 
     Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES 
     section: 'mini_portile2' 
! 
!  Failed to install gems via Bundler. 
! 
!  Push rejected, failed to compile Ruby app 

Jede Hilfe wird sehr geschätzt.

+0

Ich benutze nicht Heroku Git - Ich gehe durch DropBox –

+0

Willst du sagen, dass ich 'heroku config ausführen sollte: set BUNDLE_WITHOUT =" development: test "' auf der Kommandozeile? –

Antwort

2

Ich würde vorschlagen, Ihre Gemfile.lock, bundle install wieder lokal zu löschen, die neue Gemfile.lock zu Ihrem Git Repository zu verpflichten und dann versuchen Sie Ihre git push heroku master erneut.

+1

@orangeplus gleichen Deal. Sie sollten versuchen, Ihre gemfile.lock zu löschen. Die Fehlermeldung besagt, dass es beschädigt ist, was ich mir vorstellen könnte, weil, als es ursprünglich erstellt wurde, Sie Ruby 2.0.x verwendet haben und jetzt eine neuere Version angegeben haben. Sie müssen also Gemfile.lock mit dieser Spezifikation oben neu generieren. Nicht sicher, aber es scheint machbar. –

+0

Vielen Dank für Ihre Hilfe. Das hat für mich funktioniert. –

+0

@orangeplus Sie sind herzlich willkommen, ich bin froh, dass ich helfen konnte. Zu Heroku zu kommen kann manchmal eine Schlampe sein. :) –

0

hatte ich das gleiche Problem und was ich tat, war ich Ruby-2.2.4 in meinem System und neu gestartet Endgerät aktualisiert, gefolgt dann diese Schritten:

bundle install 
bundle update 
git push heroku 

(es ist eine gute Idee, um die Edelsteine ​​mit Bündel zu aktualisieren Update, um sicherzustellen, dass die Versionen übereinstimmen)

0

Das Problem ist, dass Sie nur die Ruby-Versionsnummer in Gemfile geändert haben, aber keine gültige Gemfile.lock neu erstellt. Dies führt zu einer Gemfile.lock, die Gems in Versionen enthält, die nicht mit Ruby 2.2.4 kompatibel sind.

Wenn Sie etwas in der Gemfile ändern, dann müssen Sie die Gemfile.lock mit derselben Ruby-Version aktualisieren oder neu erstellen, bevor Sie zu Heroku wechseln.

Ich schlage vor, einen Ruby-Version Manager (wie rbenv oder RVM) zu verwenden, um die Lage sein, mehrere Versionen von Ruby auf Ihrer Entwicklungsmaschine laufen zu lassen. Aktualisieren Sie dann die Ruby-Version in Ihrer Anwendung, indem Sie die Ruby-Version in Gemfile (für Heroku) und .ruby-version (für Ihre lokale Umgebung) ändern. Beide Versionen müssen übereinstimmen.

Sobald dies erledigt ist, laufen bundle install die Gemfile.lock oder zu aktualisieren (wenn es gab wichtige Updates oder Sie wollen nur sicherstellen, dass Sie die neuesten Versionen verwenden) laufen bundle update die Gemfile.lock neu zu erstellen.