2010-10-19 6 views

Antwort

2

Die Art und Weise, wie Sie normalerweise add domains in Heroku die Heroku API über die Heroku gem verwendet. Es gibt einen Befehl namens heroku domains:add Sie

$ heroku domains:add example.com 

Wie ich schon gesagt aufrufen kann, ruft der Client die Heroku API. Sie können die Heroku Domain API-Informationen aus der Bibliothek extrahieren und ein benutzerdefiniertes Skript erstellen, das die Heroku-API zum Hinzufügen und Entfernen einer Domain aus Ihrer App aufruft.

Hier ist die client source code.

Hinweis. Da Sie "Reverse Engineering" und eine API sind, die nicht dokumentiert zu sein scheint, sollten Sie Heroku um Erlaubnis bitten, dies zu tun, nur um sicher zu sein, dass Sie nichts gegen ihre TOS erstellen.

+0

Danke Simone. Also gibt es keinen dokumentierten Weg, dies legal zu tun? –

+0

Ehrlich gesagt, glaube ich nicht, dass dieser Weg "illegal" ist, weil du nichts kompilierst. Übrigens sollten Sie sich an Heroku wenden, um sicherzustellen, dass dies möglich ist. –

+0

Kein Grund zur Sorge, Heroku unterstützt die Verwendung der API, zum Beispiel erwähnen sie die Verwendung von [zur Änderung der Anzahl der Dynos in ihren Dokumenten] (http://docs.heroku.com/faq-product-features#how-does) -dyno-amp-worker-scaling-work). Die API kann sich jedoch in Zukunft ändern. – wuputah

0

Das Juwel ist von Heroku und ist der empfohlene Ansatz. Ich kontaktierte gerade Heroku mit der gleichen Frage und das war dort Antwort:

Sie müssen Heroku über die Domäne und wo es auch zu routen. Der CNAME teilt DNS mit, wie die Anfrage an Heroku zu richten ist. Jetzt müssen Sie Heroku mitteilen, an welche App es gesendet werden soll. Sie tun dies, indem Sie die Domain zu Ihrer App hinzufügen. In Ihrem Fall müssten Sie "heroku domains: my.domain.com hinzufügen" zu Ihrer App hinzufügen. Sie können dies auch programmgesteuert von Ihrer Anwendung über unsere API ausführen. Ein Beispiel für die Verbindung und Verwendung der API finden Sie im Heroku-Juwel (http://github.com/heroku/heroku).

16

Ich habe Heroku für die gleiche Sache kontaktiert, und sie zeigten mich nur auf , und sagten, es ist in Ordnung, es so zu verwenden.

Ich fürchte, da ist es nicht. Our API wird nur durch den Code des Clients "dokumentiert".

können Sie unsere Google-Gruppe als auch von Mitgliedern der Gemeinschaft für immer Beratung hilfreich sein: http://groups.google.com/group/heroku/

Oren

Hier ist die einfache How-to:

require 'heroku' 

heroku = Heroku::Client.new('heroku_username', 'heroku_password') 
heroku.add_domain('heroku_app_name', 'example.com') 
heroku.remove_domain('heroku_app_name','example.com') 

the api Siehe mehr .

Natürlich würde ich empfehlen, kein Klartext-Passwort in den Code einzufügen. Eine nette Sache, die Sie tun können, ist die Heroku-Umgebungsvariablen zu verwenden, um Ihre Kennwörter aus dem Code zu entfernen.

heroku = Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASSWORD']) 

und dann können Sie die Umgebungsvariablen in Ihrer App mit

$> heroku config:add HEROKU_USER='heroku_username' 
$> heroku config:add HEROKU_PASSWORD='heroku_password' 

von der Kommandozeile gesetzt.

7

Das Heroku-Juwel wurde nun als veraltet eingestuft. Sie sollten stattdessen den Edelstein heroku.rb verwenden. Die Befehle haben sich leicht geändert, aber es ist im Wesentlichen das Gleiche.

require 'heroku-api' 

heroku = Heroku::API.new(:api_key => API_KEY)       # use API Key 
heroku = Heroku::API.new(:username => USERNAME, :password => PASSWORD) # use username and password 
heroku = Heroku::API.new(:headers => {'User-Agent' => 'custom'})  # use custom header 


heroku.delete_domain('app', 'example.com') # remove the 'example.com' domain from the 'app' app 
heroku.get_domains('app')     # list configured domains for the 'app' app 
heroku.post_domain('app', 'example.com') # add 'example.com' domain to the 'app' app