2012-03-08 10 views

Odpowiedz

14

robię konkretne restartów robotnik z poziomu aplikacji przy użyciu crona. Tak:

heroku = Heroku::Client.new(ENV['APP_USERNAME'], ENV['APP_PASSWORD']) 
heroku.ps_restart(ENV['APP_NAME'], :ps =>'worker.1') 

Z Heroku API Doc

40

Oto polecenie, aby ponownie uruchomić danego procesu

heroku ps:restart worker.1 --app APP_NAME 
+0

Ponieważ wiemy już od pytania, że ​​konkretny proces to "worker.1", możemy zmienić jego nazwę na "heroku ps: restart worker.1 --app APP_NAME". –

5

użyć "Heroku-api" gem, a nie "Heroku" gem. Korzystanie z klejnotu "heroku" działa w ten sposób (od dzisiaj), ale jest przestarzałe. Jest przeznaczony do użycia przez konsolę.

https://github.com/heroku/heroku.rb

API gem wygląda bardzo łatwy w użyciu. Chwycić ci klucz API ze strony internetowej Heroku, umieścić go w zmiennych app config i zadzwonić:

require 'heroku-api' 
heroku.post_ps_restart('app', 'ps' => 'web.1') # restart 'web.1' process for 'app' app 
1

Obecnie trzeba podjąć „platform-api” Gem (documentation here) z Heroku ponieważ „Heroku” gem jest już nie działa, a klej "heroku-api" służy do interakcji z interfejsem Heroku Legacy API. The Legacy API będzie słońca w dniu 15 kwietnia 2017 r

Najpierw trzeba utworzyć token OAuth za pomocą narzędzia wiersza poleceń toolbelt Heroku:

$ heroku plugins:install heroku-cli-oauth 
$ heroku authorizations:create -d "Platform API example token" 
Created OAuth authorization. 
    ID:   2f01aac0-e9d3-4773-af4e-3e510aa006ca 
    Description: Platform API example token 
    Scope:  global 
    Token:  e7dd6ad7-3c6a-411e-a2be-c9fe52ac7ed2 

użyć wartości Reklamowe przy uruchamianiu klienta:

require 'platform-api' 
heroku = PlatformAPI.connect_oauth('e7dd6ad7-3c6a-411e-a2be-c9fe52ac7ed2') 

restart specyficzny hamownia z tym poleceniem:

heroku.dyno.restart(app_id_or_app_name, dyno_id_or_dyno_name) 

lub ponowne uruchomienie ll z tym poleceniem:

heroku.dyno.restart_all(app_id_or_app_name) 

Można uzyskać identyfikatory wszystkich aplikacji z

heroku.app.list 

I identyfikatory hamowni aplikację za pośrednictwem

heroku.dyno.list(app_id_or_app_name) 
+0

Czy stara metoda korzystania z konfiguracji HEROKU_API_KEY var jest teraz zbędna? Czy powinienem zapisać token OAuth jako nową konfigurację var? – Tom

0

Aby rozwinąć na coderuby za odebrać bit:

heroku = PlatformAPI.connect_oauth(ENV['PLATFORM_API_TOKEN']) 

worker_ids = heroku.dyno 
    .list(ENV['HEROKU_APP_NAME']) 
    .select { |dyno| dyno['type'] == 'worker' } 
    .map { |dyno| dyno['id'] } 

worker_ids.each do |id| 
    heroku.dyno.restart(ENV['HEROKU_APP_NAME'], id) 
end 

Po ustawieniu odpowiednich zmiennych środowiskowych. Możesz to uwzględnić w zadaniu rake, a następnie uruchomić program planujący Heroku, gdy uznasz to za stosowne.