2012-04-20 3 views
9

Ich habe eine einfache Rails-Anwendung, die ich auf Heroku bereitstellen möchte. Wenn ich den folgenden Befehl ausführeWarum ich bekomme Konnte nicht multi_json-1.3.1 in irgendeiner der Quellen finden?

git push heroku master 

Die folgende Fehlermeldung wird angezeigt.

Could not find multi_json-1.3.1 in any of the sources 
! 
! Failed to install gems via Bundler. 
! 
! Heroku push rejected, failed to compile Ruby/rails app 

Hier ist meine Gemfile

gem 'rails', '3.2.3' 
gem 'pg' 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'therubyracer', :platform => :ruby 
    gem 'uglifier', '>= 1.0.3' 
end 
gem 'jquery-rails' 

Antwort

25

die Gemfile.lock Datei löschen und Laufbündel installieren. Das funktioniert für mich!

+0

Sie richtig sind.Gerade jetzt habe ich es gelöst :) –

+0

einfach und funktioniert;) – ghostrifle

+0

Vergessen Sie auch nicht, die Änderungen an Gemfile.lock hinzufügen und festschreiben, bevor Sie es nach dem Bundle installieren. Dies scheint offensichtlich, aber ich habe es vergessen, und natürlich war der Fehler der gleiche beim Schieben;) – Hezad

-1

Ich habe es durch die folgenden Schritte gelöst.

Removed Gemfile.lock 
bundle install 

Die Ursache des Problems ist zunächst meine Gemfile.lock hat multi_json-1.3.1

Jetzt hat es die Version multi_json-1.3.2

0

In meinem Fall, ich

fehlte
source 'https://rubygems.org' 

in Gemfile. Mein Verdacht ist, dass alte Versionen von Bundler funktionieren können, ohne dass eine Quelle erwähnt wird, aber neuere Versionen nicht.

1

Ich sah eine Reihe dieser Fehler für verschiedene Edelsteine, obwohl ich wusste, dass diese Edelsteine ​​verfügbar waren (zB gem list -r <gem> zeigte sie, einschließlich Version; Browsing rubygems.org zeigte, dass die benötigte Version dort war und nicht gewesen war) gerissen etc) und ich hatte eine Quelle festgelegt (ich habe sogar 6 verschiedene Quellen gesetzt, um sicher zu sein).

Es stellte sich heraus, mein Problem war ich git stashed hatte, bevor ein Feature Zweig verlassen, um stets über die Entwicklung und vergessen ziehen das Versteck danach Pop, was ein Problem war, weil ich meine .rvmrc verändert hatte und die Änderung nicht verpflichtet (zu verwenden, ein neuerer Rubin als unsere Produktion).

Weil meine .rvmrc ein gemset für das Projekt angegeben, stashing es gemeint war ich plötzlich Bündelung gegen ein gemset, die eine ganze Reihe von Edelsteinen in meinem Gemfile.lock und aus Gründen fehlte Ich verstehe nicht, Bündler annimmt, wenn der Edelstein in ist Gemfile.lock es ist bereits installiert und es sieht nicht aus der Ferne.

Also nur für den Fall, dass jemand anderes diese unglaublich frustrierende Ecke Fall konfrontiert Ich dachte, ich würde es hier schreiben.

1

Wenn Sie Capistrano verwenden, um Ihre Bereitstellungen durchzuführen, und Sie auf mysteriöse Weise erhalten "Konnte multi_json-1.7.2 in keiner der Quellen finden", stellen Sie sicher, dass Sie require "bundler/capistrano" an der Spitze Ihrer config/deploy.rb haben.

0

Für mich wurde dies verursacht, weil Pow (lokaler Rack-Server) nicht die richtige RVM Ruby Version/Gemset verwendet.

behoben, indem folgende .powrc:

# based on https://coderwall.com/p/pkj39a 
if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".ruby-version" ] && [ -f ".ruby-gemset" ]; then 
    source "$rvm_path/scripts/rvm" 
    rvm use `cat .ruby-version`@`cat .ruby-gemset` 
fi 

Quelle: https://coderwall.com/p/pkj39a

Verwandte Themen