2012-04-20 8 views
9

Mam prostą aplikację Railsową, którą chcę wdrożyć na Heroku. Po uruchomieniu poniższego polecenia zostanie wyświetlony poniższy komunikat o błędzie:Dlaczego otrzymuję Nie można znaleźć multi_json-1.3.1 w żadnym ze źródeł?

git push heroku master 

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 

Oto moja 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' 

Odpowiedz

25

Usuń plik Gemfile.lock i bieg wiązki instalacji. To działa dla mnie!

+0

Jesteś poprawne.Właśnie rozwiązałem to :) –

+0

proste i działające;) – ghostrifle

+0

Nie zapomnij także dodać i zatwierdzić zmian w Gemfile.lock przed naciśnięciem go po instalacji pakietu. Wydaje się to oczywiste, ale zapomniałem tego zrobić i oczywiście błąd był taki sam podczas pchania;) – Hezad

-1

Rozwiązałem go, wykonując następujące kroki.

Removed Gemfile.lock 
bundle install 

Przyczyną problemu jest początkowo mój Gemfile.lock został multi_json-1.3.1

Teraz ma wersję multi_json-1.3.2

0

W moim przypadku brakowało

source 'https://rubygems.org' 

w Gemfile. Podejrzewam, że stare wersje programu bundler mogą działać bez wspomnianego źródła, ale nowsze wersje nie.

1

Widziałem serię tych błędów dla różnych klejnotów pomimo faktu, że wiedziałem, że te klejnoty były dostępne (np. gem list -r <gem> pokazał je, w tym wersji; przeglądanie rubygems.org pokazało wersję, której potrzebowałem, było tam i nie było szarpane itp.) i miałem zestaw źródłowy (nawet ustawiłem 6 różnych źródeł, aby mieć pewność).

Okazało się moim problemem było miałem git stashed przed opuszczeniem gałąź funkcji ciągnąć się najpóźniej rozwijać i zapomniane pop zapas potem, co było problemem, bo nie zmieniło mój .rvmrc i nie dopuścił się zmiany (w użyciu nowszy rubin niż nasza produkcja).

Ponieważ mój .rvmrc podał kamień szlachetny dla projektu, jego przechowywanie oznaczało, że nagle złączyłem się z klejnotem, któremu brakowało całej masy klejnotów w moim Gemfile.lock iz powodów, których nie rozumiem, Bundler zakłada, że ​​klejnot jest w Gemfile.lock jest już zainstalowany i nie wyszukuje go zdalnie.

Więc na wszelki wypadek, gdy ktoś inny stanie w obliczu tej niewiarygodnie frustrującej sprawy na rogu, pomyślałem, że ją tutaj zapiszę.

1

Jeśli używasz Capistrano do wykonania swoich wdrożeń i w tajemniczy sposób otrzymujesz komunikat "Nie można znaleźć multi_json-1.7.2 w żadnym ze źródeł", upewnij się, że masz require "bundler/capistrano" u góry swojej config/deploy.rb.

0

Dla mnie było to spowodowane tym, że Pow (lokalny serwer stelażowy) nie używał poprawnej wersji ruby ​​RVM/gemset.

Poprawiono dodając następujący .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 

Źródło: https://coderwall.com/p/pkj39a

Powiązane problemy