Ich erstelle eine App, mit der Benutzer ihre eigene Domain verwenden können. Welche Methode verwende ich in meiner Rails App, um die gewählte Domain automatisch bei Heroku zu registrieren? Ich muss es auch abmelden, wenn sie es ändern.Wie füge ich der Heroku-App Domains mit Ruby-Code hinzu?
Antwort
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.
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).
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.
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
Danke Simone. Also gibt es keinen dokumentierten Weg, dies legal zu tun? –
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. –
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