2012-10-22 17 views
6

Przesyłam aplikację Heroku ze stosu Aspen do cedru w Heroku, postępując zgodnie z ich instrukcjami.heroku: bash: pakiet: polecenie nie znaleziono

Jestem na ostatnim etapie wdrażania. Otrzymuję ten błąd:

2012-10-22T11:23:53+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -p 40310 -e production` 
2012-10-22T11:23:54+00:00 app[web.1]: bash: bundle: command not found 

nie mogę zobaczyć, jak mogę być odpowiedzialny za mówienie stos Heroku gdzie wiązka jest lub dostarczenie go, ponieważ Bundler jest używany przez niego w dokładnie tej pracy. Komenda ta jest określona w Procfile dla aplikacji:

web: bundle exec thin start -p $PORT -e $RACK_ENV 

Innym podobne pytanie na stackoverflow sugeruje, że dzieje się tak wtedy, gdy aplikacja jest popychany do Heroku bez Procfile początkowo, więc Heroku dostaje błędne pojęcie o jaki rodzaj aplikacji to jest. Ten plakat usunął jego aplikację i stworzył nową, i odnotował sukces. Jednak wysiłek związany z usuwaniem i odtwarzaniem mojej przeniesionej aplikacji jest wysoki. Czy jest jakiś sposób, aby to naprawić, zamiast zacząć od nowa?

+0

W moim przypadku, określ najnowszy Ruby, który działał z moją aplikacją w moim Gemfile, rozwiązał problem. –

Odpowiedz

5

Proces budowy ślimaka Heroku musiał się zmienić w odniesieniu do aplikacji ruby ​​1.8.7. Zgaduję, że zaczęli pakować do 1.8 ścieżek zamiast 1.9.1 dla 1.8 aplikacji. Moja poprzednio działająca aplikacja przestała działać po tym, jak próbowałam wprowadzić nową wersję.

Oto co dostałem to działa ponownie:

heroku config:add PATH=bin:vendor/bundle/1.8/bin:/usr/local/bin:/usr/bin:/bin GEM_PATH=vendor/bundle/1.8 

Wziąłem te ścieżki z nowo utworzonej aplikacji przy użyciu tego samego repozytorium git jak kiedyś wcześniej.

EDYCJA: Okazało się, że heroku opublikował artykuł devcenter Changing Ruby Version Breaks Path, który określa ścieżki dla różnych wersji ruby.

+0

Dalszy wgląd - ścieżka jest teraz (być może w odpowiedzi na mój bilet Heroku) ustawiona poprawnie, jeśli pierwszy raz przepchniesz pakiet Gemfile, Gemfile ma poprawną wersję ruby. Będzie (zrozumiałe) założyć 1.9.1, jeśli nie określisz. Błędem jest ta ścieżka (błędnie odgadłem 1.8.7 za pierwszym razem, w oparciu o 1.9.1, który widziałem!) – GreenAsJade

2

miałem ten sam problem i rozwiązać go przez ustawienie poprawnych zmiennych Heroku config

$ heroku config 
=== xxxx Config Vars 
DATABASE_URL:     postgres://(...) 
GEM_PATH:      vendor/bundle/ruby/1.9.1 
HEROKU_POSTGRESQL_CRIMSON_URL: postgres://(...) 
LANG:       en_US.UTF-8 
PATH:       bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin 
PGBACKUPS_URL:     https://(...) 
RACK_ENV:      production 
RAILS_ENV:      production 

można utworzyć aplikację pustych szyny, wcisnąć go do Heroku i sprawdzić zmienne automatycznie ustawione, a następnie skopiować (i dostosuj) do swojej aplikacji

+0

Dzięki! Moja konfiguracja wygląda tak samo jak twoja. To trochę dziwne, ponieważ moja jest aplikacja 1.8.7, ale nie rozumiem, dlaczego miałoby to wpływ na to, czy pakiet jest na ścieżce. – GreenAsJade

+0

Hej - czy możesz wspomnieć o tym, co trzeba było zmienić, a konkretnie, że to zadziałało? – GreenAsJade

+1

Powinieneś dostosować konfigurację do ruby ​​1.8.7 Domyślam się, że to, co zadziałało, to zmiana PATH i GEM_PATH spróbuj zmienić 1.9.1 o 1.8.7 lub sprawdź wartości konfiguracyjne nowej utworzonej aplikacji (z rubem 1.8.7) –