Beachten Sie, dass wir kürzlich die
4-stableFiliale inmainumbenannt haben. Dies kann Sie beeinflussen, wenn Sie Änderungen am Code von Octokit vor Ort vornehmen. Weitere Informationen und die Schritte zur Neukonfiguration Ihres lokalen Klons für den neuen Zweignamen finden Sie in diesem Beitrag.
Ruby Toolkit für die Github -API.
Upgrade? Überprüfen Sie den Upgrade -Handbuch, bevor Sie zu einer neuen Major -Version stoßen.
API -Wrapper sollten die Redewendungen der Sprache widerspiegeln, in der sie geschrieben wurden. Octokit.rb wickelt die Github -API in einen flachen API -Client, der den Ruby -Konventionen folgt und wenig Ruhe benötigt. Die meisten Methoden haben Positionsargumente für die erforderlichen Eingaben und einen Options -Hash für optionale Parameter, Header oder andere Optionen:
client = Octokit :: Client . new
# Fetch a README with Accept header for HTML format
client . readme 'al3x/sovereign' , :accept => 'application/vnd.github.html' Installieren Sie über Rubygemems
gem install octokit
... oder fügen Sie zu Ihrer GemFile hinzu
gem "octokit"
Greifen Sie in Ruby auf die Bibliothek zu:
require 'octokit'
API -Methoden sind als Client -Instanzmethoden verfügbar.
# Provide authentication credentials
client = Octokit :: Client . new ( :access_token => 'personal_access_token' )
# You can still use the username/password syntax by replacing the password value with your PAT.
# client = Octokit::Client.new(:login => 'defunkt', :password => 'personal_access_token')
# Fetch the current user
client . userWenn Sie zusätzliche Parameter übergeben, um basierte Anforderungen zu erhalten, verwenden Sie die folgende Syntax:
# query: { parameter_name: 'value' }
# Example: Get repository listing by owner in ascending order
client . repos ( { } , query : { type : 'owner' , sort : 'asc' } )
# Example: Get contents of a repository by ref
# https://api.github.com/repos/octokit/octokit.rb/contents/path/to/file.rb?ref=some-other-branch
client . contents ( 'octokit/octokit.rb' , path : 'path/to/file.rb' , query : { ref : 'some-other-branch' } ) Die meisten Methoden geben ein Resource zurück, das Punktnotation und [] Zugriff auf Felder bietet, die in der API -Antwort zurückgegeben wurden.
client = Octokit :: Client . new
# Fetch a user
user = client . user 'jbarnette'
puts user . name
# => "John Barnette"
puts user . fields
# => <Set: {:login, :id, :gravatar_id, :type, :name, :company, :blog, :location, :email, :hireable, :bio, :public_repos, :followers, :following, :created_at, :updated_at, :public_gists}>
puts user [ :company ]
# => "GitHub"
user . rels [ :gists ] . href
# => "https://api.github.com/users/jbarnette/gists" HINWEIS: URL -Felder werden in eine separate .rels -Sammlung für eine leichtere Hypermedia -Unterstützung eingeführt.
Während die meisten Methoden ein Resource oder einen Booleschen zurückgeben, benötigen Sie manchmal Zugriff auf die HTTP -Antwortheader. Sie können mit Client#last_response auf die letzte HTTP -Antwort zugreifen:
user = client . user 'andrewpthorp'
response = client . last_response
etag = response . headers [ :etag ] Wenn die API eine Fehlerantwort zurückgibt, erhöht Octokit eine Ruby -Ausnahme.
Eine Reihe verschiedener Ausnahmen kann abhängig von dem von der API zurückgegebenen Fehler beispielsweise angehoben werden:
400 Bad Request -Antwort führt zu einem Octokit::BadRequest -Fehler403 Forbidden Fehler mit einer Meldung "Rate Limited Overed" führt zu einem Octokit::TooManyRequests -Fehler Alle verschiedenen Ausnahmeklassen erben von Octokit::Error und enthüllen Sie #response_status , #response_headers und #response_body . Für Validierungsfehler gibt #errors eine Array von Hash -ES mit den detaillierten Informationen zurück, die von der API zurückgegeben wurden.
Octokit unterstützt die verschiedenen Authentifizierungsmethoden, die von der Github -API unterstützt werden:
Die Verwendung Ihres Github -Benutzernamens und Ihres Passworts ist der einfachste Weg, um authentifizierte Anfragen zu stellen:
client = Octokit :: Client . new ( :login => 'defunkt' , :password => 'c0d3b4ssssss!' )
user = client . user
user . login
# => "defunkt"Während die grundlegende Authentifizierung Sie schnell beginnen können, sind OAuth Access Token die bevorzugte Möglichkeit, sich im Namen der Benutzer zu authentifizieren.
OAuth Access Tokens bieten zwei Hauptvorteile über die Verwendung Ihres Benutzernamens und Ihres Kennworts:
Wenn Sie mit dem Octokit -Client einen Zugriffstoken verwenden, geben Sie Ihr Token im Parameter :access_token -Optionen anstelle Ihres Benutzernamens und Ihres Kennworts weiter:
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" )
user = client . user
user . login
# => "defunkt"Sie können Zugriffsstoken über Ihre GitHub -Kontoeinstellungen erstellen.
Die Zwei-Faktor-Authentifizierung bringt zusätzliche Sicherheit in das Konto, indem weitere Informationen zur Anmeldung erforderlich sind.
Die Verwendung von Zwei-Faktor-Authentifizierung für API-Aufrufe ist so einfach wie das Hinzufügen des erforderlichen Headers als Option:
client = Octokit :: Client . new
:login => 'defunkt' ,
:password => 'c0d3b4ssssss!'
user = client . user ( "defunkt" , :headers => { "X-GitHub-OTP" => "<your 2FA token>" } ) Octokit unterstützt das Lesen von Anmeldeinformationen aus einer NETRC -Datei (defekt zu ~/.netrc ). Angesichts dieser Zeilen in Ihrem netrc:
machine api.github.com
login defunkt
password c0d3b4ssssss!
Sie können jetzt einen Kunden mit diesen Anmeldeinformationen erstellen:
client = Octokit :: Client . new ( :netrc => true )
client . login
# => "defunkt"Aber ich möchte OAuth verwenden, sagen Sie. Da die Github -API die Verwendung eines OAuth -Tokens als Grundkennwort unterstützt, können Sie vollkommen:
machine api.github.com
login defunkt
password <your 40 char token>
HINWEIS: Die Unterstützung für NETRC erfordert das Hinzufügen des NETRC -Edelsteins zu Ihrer GemFile oder .gemspec .
Octokit unterstützt auch die Authentifizierung nur für Anwendungen mithilfe von OAuth-Anwendungs-Client-Anmeldeinformationen. Die Verwendung von Anwendungsanmeldeinformationen führt dazu, dass anonyme API -Aufrufe im Namen einer Anwendung aufgerufen werden, um die höhere Ratengrenze zu nutzen.
client = Octokit :: Client . new
:client_id => "<your 20 char id>" ,
:client_secret => "<your 40 char secret>"
user = client . user 'defunkt'Octokit.rb unterstützt auch die Authentifizierung mithilfe einer GitHub -App, für die ein generiertes JWT -Token erforderlich ist.
client = Octokit :: Client . new ( :bearer_token => "<your jwt token>" )
client . app
# => about GitHub App info Die Standardergebnisse aus der Github -API sind 30, wenn Sie mehr hinzufügen möchten, müssen Sie dies während der Octokit -Konfiguration tun.
Octokit :: Client . new ( access_token : "<your 40 char token>" , per_page : 100 ) Viele Github -API -Ressourcen sind paginiert. Während Sie möglicherweise versucht sind, hinzuzufügen :page zu Ihren Aufrufen, gibt die API Links zum nächsten, vorherigen und letzten Seiten für Sie im Link -Antwort -Header als Hypermedia -Link -Beziehungen zurück.
issues = client . issues 'rails/rails'
issues . concat client . get ( client . last_response . rels [ :next ] . href )Für kleine Ressourcenlisten bietet Octokit eine automatische Pagination. Wenn dies aktiviert ist, holen und verkettet die Forderungen nach paginierten Ressourcen die Ergebnisse von jeder Seite in ein einzelnes Array:
client . auto_paginate = true
issues = client . issues 'rails/rails'
issues . length
# => 702Sie können auch die automatische Pagination für alle Octokit -Client -Instanzen aktivieren:
Octokit . configure do | c |
c . auto_paginate = true
end HINWEIS: Während Octokit Auto Pagination die Seitengröße auf maximal 100 festlegt und versucht, Ihre Ratenlimit nicht zu überschreiten, möchten Sie wahrscheinlich ein benutzerdefiniertes Muster zum Durchqueren großer Listen verwenden.
Mit ein bisschen Setup können Sie Octokit auch mit Ihrer Github Enterprise -Instanz verwenden.
Um mit den "regulären" Github.com -APIs in Github Enterprise zu interagieren, konfigurieren Sie einfach den api_endpoint so, dass er Ihrem Hostnamen entspricht. Zum Beispiel:
Octokit . configure do | c |
c . api_endpoint = "https://<hostname>/api/v3/"
end
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" ) Die GitHub Enterprise Admin -APIs befinden sich unter einem anderen Client: EnterpriseAdminClient . Sie müssen ein Administratorkonto haben, um diese APIs zu verwenden.
admin_client = Octokit :: EnterpriseAdminClient . new (
:access_token => "<your 40 char token>" ,
:api_endpoint => "https://<hostname>/api/v3/"
)
# or
Octokit . configure do | c |
c . api_endpoint = "https://<hostname>/api/v3/"
c . access_token = "<your 40 char token>"
end
admin_client = Octokit . enterprise_admin_client . new Die GitHub Enterprise Management Console APIs unterliegen ebenfalls unter einem separaten Kunden: EnterpriseManagementConsoleClient . Um es zu verwenden, müssen Sie sowohl Ihr Verwaltungskonsolenkennwort als auch den Endpunkt Ihrer Verwaltungskonsole angeben. Dies unterscheidet sich von dem oben angegebenen API -Endpunkt.
management_console_client = Octokit :: EnterpriseManagementConsoleClient . new (
:management_console_password => "secret" ,
:management_console_endpoint = "https://hostname:8633"
)
# or
Octokit . configure do | c |
c . management_console_endpoint = "https://hostname:8633"
c . management_console_password = "secret"
end
management_console_client = Octokit . enterprise_management_console_client . newMöglicherweise müssen Sie SSL vorübergehend deaktivieren, während Sie Ihre GitHub Enterprise -Installation zum ersten Mal einrichten. Sie können dies mit der folgenden Konfiguration tun:
client . connection_options [ :ssl ] = { :verify => false } Denken Sie daran, sich zu drehen :verify auf true zurück, da dies für die sichere Kommunikation wichtig ist.
Während Octokit::Client beim Erstellen einer neuen Client -Instanz eine Reihe von Optionen akzeptiert, können Sie Ihre Konfigurationsoptionen auf Modulebene festlegen. Dies ist besonders praktisch, wenn Sie eine Reihe von Client -Instanzen erstellen, die auf einigen freigegebenen Standardeinstellungen basieren. Das Ändern der Optionen beeinflusst nur neue Instanzen und ändert nicht vorhandene Octokit::Client -Instanzen, die mit früheren Optionen erstellt wurden.
Jedes beschreibbare Attribut in {octokit :: configurable} kann jeweils einzeln festgelegt werden:
Octokit . api_endpoint = 'http://api.github.dev'
Octokit . web_endpoint = 'http://github.dev'oder in Batch:
Octokit . configure do | c |
c . api_endpoint = 'http://api.github.dev'
c . web_endpoint = 'http://github.dev'
endStandardkonfigurationswerte werden in {Octokit :: Standard} angegeben. Viele Attribute suchen nach einem Standardwert aus der Env, bevor Octokits Standard zurückgegeben wird.
# Given $OCTOKIT_API_ENDPOINT is "http://api.github.dev"
client . api_endpoint
# => "http://api.github.dev" Abschaltungswarnungen und API -Endpunkte in der Entwicklung Vorschau -Warnungen werden standardmäßig auf STDOut gedruckt. Diese können deaktiviert werden, indem die env OCTOKIT_SILENT=true festgelegt wird.
Standardmäßig stellt Octokit keine Zeitüberschreitungsnetzwerke an. Um ein Timeout festzulegen, geben Sie Faraday Timeout -Einstellungen an die Einstellung connection_options von Octokit weiter.
Octokit . configure do | c |
c . api_endpoint = ENV . fetch ( 'GITHUB_API_ENDPOINT' , 'https://api.github.com/' )
c . connection_options = {
request : {
open_timeout : 5 ,
timeout : 5
}
}
endSie sollten eine Zeitüberschreitung festlegen, um das Zeitüberschreitungsmodul von Ruby zu vermeiden, das Ihren Server verleihen kann. Hier sind einige Ressourcen für weitere Informationen dazu:
Ab Version 2.0 ist Octokit hypermedia-fähig. Unter der Haube verwendet {Octokit :: client} Sawyer, einen Hypermedia -Client, der auf Faraday basiert.
Ressourcen, die von Octokit -Methoden zurückgegeben werden, enthalten nicht nur Daten, sondern auch Hypermedia Link Relations:
user = client . user 'technoweenie'
# Get the repos rel, returned from the API
# as repos_url in the resource
user . rels [ :repos ] . href
# => "https://api.github.com/users/technoweenie/repos"
repos = user . rels [ :repos ] . get . data
repos . last . name
# => "faraday-zeromq" Bei der Verarbeitung von API -Antworten werden alle *_url -Attribute in die Link -Relations -Sammlung eingebaut. Jedes url -Attribut wird zu .rels[:self] .
Möglicherweise bemerken Sie, dass viele Verbindungsbeziehungen variable Platzhalter haben. Octokit unterstützt URI -Vorlagen für die parametrisierte URI -Expansion:
repo = client . repo 'pengwynn/pingwynn'
rel = repo . rels [ :issues ]
# => #<Sawyer::Relation: issues: get https://api.github.com/repos/pengwynn/pingwynn/issues{/number}>
# Get a page of issues
rel . get . data
# Get issue #2
rel . get ( :uri => { :number => 2 } ) . dataWenn Sie Octokit als reine Hypermedia -API -Client verwenden möchten, können Sie von dort an der API -Root beginnen und Linkbeziehungen folgen:
root = client . root
root . rels [ :repository ] . get :uri => { :owner => "octokit" , :repo => "octokit.rb" }
root . rels [ :user_repositories ] . get :uri => { :user => "octokit" } ,
:query => { :type => "owner" }Octokit 3.0 zielt darauf ab, hypermediasorientiert zu sein und die derzeit im Kunden verwendete interne URL-Konstruktion zu entfernen.
Version 4.0
state in den Methodenoptionen über.Version 3.0 beinhaltet ein paar Bruchänderungen beim Upgrade von v2.xx:
Der Standardmedientyp ist jetzt v3 anstelle von beta . Wenn Sie den älteren Medientyp anfordern müssen, können Sie den Standardmedientyp für den Client festlegen:
Octokit . default_media_type = "application/vnd.github.beta+json"oder pro-rquest
client . emails ( :accept => "application/vnd.github.beta+json" ) Die langmietische Octokit::Client#create_download -Methode wurde entfernt.
Version 2.0 enthält eine komplett umgeschriebene Client -Fabrik, in der sich die Clientinstanzen jetzt basierend auf eindeutigen Konfigurationsoptionen merktieren. Breaking -Änderungen umfassen auch:
:oauth_token ist jetzt :access_token:auto_traversal ist jetzt :auto_paginateHashie::Mash wurde entfernt. Antworten geben nun ein Sawyer::Resource Ressourcenobjekt zurück. Dieser neue Typ verhält sich hauptsächlich wie ein Rubin Hash , unterstützt aber die Hashie::Mash -API nicht vollständig.Octokit::TooManyRequests Octokit::TooManyLoginAttemptssearch_* aus v1.x finden sich nun unter legacy_search_*DateTime -Objekte. Vorherige Versionen haben DateTime -Felder als "String" -Objekte ausgegeben. Da Octokit Faraday unter der Motorhaube einsetzt, kann ein gewisses Verhalten über Middleware erweitert werden.
Oft hilft es zu wissen, was Octokit unter der Motorhaube tut. Sie können der Middleware einen Logger hinzufügen, mit dem Sie in den zugrunde liegenden HTTP -Datenverkehr schauen können:
stack = Faraday :: RackBuilder . new do | builder |
builder . use Faraday :: Retry :: Middleware , exceptions : Faraday :: Retry :: Middleware :: DEFAULT_EXCEPTIONS + [ Octokit :: ServerError ] # or Faraday::Request::Retry for Faraday < 2.0
builder . use Octokit :: Middleware :: FollowRedirects
builder . use Octokit :: Response :: RaiseError
builder . use Octokit :: Response :: FeedParser
builder . response :logger do | logger |
logger . filter ( /(Authorization: "(token|Bearer) )( w +)/ , '1[REMOVED]' )
end
builder . adapter Faraday . default_adapter
end
Octokit . middleware = stack
client = Octokit :: Client . new
client . user 'pengwynn' I, [2013-08-22T15:54:38.583300 #88227] INFO -- : get https://api.github.com/users/pengwynn
D, [2013-08-22T15:54:38.583401 #88227] DEBUG -- request: Accept: "application/vnd.github.beta+json"
User-Agent: "Octokit Ruby Gem 2.0.0.rc4"
I, [2013-08-22T15:54:38.843313 #88227] INFO -- Status: 200
D, [2013-08-22T15:54:38.843459 #88227] DEBUG -- response: server: "GitHub.com"
date: "Thu, 22 Aug 2013 20:54:40 GMT"
content-type: "application/json; charset=utf-8"
transfer-encoding: "chunked"
connection: "close"
status: "200 OK"
x-ratelimit-limit: "60"
x-ratelimit-remaining: "39"
x-ratelimit-reset: "1377205443"
...
Weitere Middleware -Magie finden Sie im Faraday Readme.
Wenn Sie die Leistung steigern, Ihr API -Ratenlimit dehnen oder die Hypermedia -Steuer vermeiden möchten, können Sie Faraday HTTP -Cache verwenden.
Fügen Sie das Edelstein zu Ihrer GemFile hinzu
gem 'faraday-http-cache'
Konstruieren Sie als nächstes Ihre eigene Faraday Middleware:
stack = Faraday :: RackBuilder . new do | builder |
builder . use Faraday :: HttpCache , serializer : Marshal , shared_cache : false
builder . use Octokit :: Response :: RaiseError
builder . adapter Faraday . default_adapter
end
Octokit . middleware = stack Nach der Konfiguration speichert die Middleware Antworten in Cache basierend auf dem ETAG -Fingerabdruck und serviert diese für zukünftige 304 Antworten für dieselbe Ressource. Sehen Sie sich das Projekt Readme für fortgeschrittene Nutzung an.
Wenn Sie Octokit lokal hacken möchten, versuchen wir, das Projekt so schmerzlos wie möglich zu gestalten. Zu hacken, klonen und rennen:
script/bootstrap
Dadurch werden Projektabhängigkeiten installiert und Sie zum Laufen bringen. Wenn Sie eine Ruby -Konsole durchführen möchten, um auf Octokit zu stechen, können Sie eine mit:
script/console
Verwenden der Skripte in ./script anstelle von bundle exec rspec , bundle console usw. stellt sicher, dass Ihre Abhängigkeiten aktuell sind.
Wir möchten, dass sowohl die Octokit.rb- als auch die größeren Octokit -Gemeinschaften offene und einladende Umgebungen sein. Bitte lesen Sie und folgen Sie sowohl im Geist als auch im Brief des Verhaltens.
Octokit verwendet VCR für die Aufnahme und Wiedergabe von API -Leuchten während der Testläufe. Diese Kassetten (Armaturen) sind Teil des Git -Projekts im Ordner spec/cassettes . Wenn Sie keine neuen Kassetten aufnehmen, können Sie die Spezifikationen mit vorhandenen Kassetten ausführen:
script/test
Octokit verwendet Umgebungsvariablen, um Anmeldeinformationen zu speichern, die bei der Prüfung verwendet werden. Wenn Sie einen API -Endpunkt testen, der keine Authentifizierung erfordert, können Sie ohne zusätzliche Konfiguration davonkommen. Die Tests verwenden größtenteils einen authentifizierten Client mit einem Token, das in ENV['OCTOKIT_TEST_GITHUB_TOKEN'] gespeichert ist. In der API werden verschiedene Authentifizierungsmethoden verwendet. Hier finden Sie die vollständige Liste konfigurierbarer Umgebungsvariablen zum Testen von Octokit:
| Envvariabel | Beschreibung |
|---|---|
OCTOKIT_TEST_GITHUB_LOGIN | GitHub -Anmeldenname (vorzugsweise einer speziell zum Testen erstellt). |
OCTOKIT_TEST_GITHUB_PASSWORD | Passwort für das Test GitHub Login. |
OCTOKIT_TEST_GITHUB_TOKEN | Personal Access Token für die Test Github Login. |
OCTOKIT_TEST_GITHUB_CLIENT_ID | Testen Sie die OAuth -Anwendungs -Client -ID. |
OCTOKIT_TEST_GITHUB_CLIENT_SECRET | Testen Sie OAuth Application Client Secret. |
OCTOKIT_TEST_GITHUB_REPOSITORY | Test -Repository zur Durchführung destruktiver Aktionen gegen ein Wichtigkeits -Repository. Automatisch durch die Testsuite erstellt, wenn nicht vorhandener Standard: api-sandbox |
OCTOKIT_TEST_GITHUB_ORGANIZATION | Testorganisation. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_LOGIN | GitHub Enterprise Anmeldename. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_TOKEN | Github Enterprise Token. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_PASSWORD | GitHub Enterprise Management -Konsolenkennwort. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_ENDPOINT | Github Enterprise Hostname. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_ENDPOINT | GitHub Enterprise Management Console Endpoint. |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_ENDPOINT | GitHub Enterprise Server GHES verwalten den Endpunkt. |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_USERNAME | GitHub Enterprise Server GHES Verwalten Sie den Benutzernamen. |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_PASSWORD | GitHub Enterprise Server GHES verwalten das Kennwort. |
OCTOKIT_TEST_GITHUB_INTEGRATION | GitHub -Integration im Besitz Ihrer Testorganisation. |
OCTOKIT_TEST_GITHUB_INTEGRATION_INSTALLATION | Installation der oben angegebenen Github -Integration. |
OCTOKIT_TEST_INTEGRATION_PEM_KEY | Dateipfad zum privaten Schlüssel, der aus Ihrer Integration generiert wird. |
Da wir unsere Kassetten regelmäßig auffrischen, denken Sie bitte einige Punkte im Auge, wenn wir neue Spezifikationen schreiben.
Diese Bibliothek soll die folgenden Ruby -Implementierungen unterstützen und wird getestet:
Wenn etwas auf einer dieser Ruby -Versionen nicht funktioniert, ist es ein Fehler.
Diese Bibliothek kann versehentlich für andere Ruby -Implementierungen funktionieren (oder anscheinend funktionieren), aber für die oben aufgeführten Versionen wird jedoch nur Unterstützung bereitgestellt.
Wenn Sie möchten, dass diese Bibliothek eine andere Ruby -Version unterstützt, können Sie sich freiwillig als Betreuerin melden. Ein Betreuer zu sein, bedeutet, dass alle Tests diese Implementierung durchgeführt und weitergeben. Wenn etwas in Ihrer Implementierung einbricht, sind Sie für die rechtzeitige Bereitstellung von Patches verantwortlich. Wenn zum Zeitpunkt einer größeren Veröffentlichung kritische Probleme für eine bestimmte Implementierung vorhanden ist, kann die Unterstützung für diese Ruby -Version fallen gelassen werden.
Diese Bibliothek zielt darauf ab, sich an semantische Versionen 2.0.0 zu halten. Verstöße gegen dieses Schema sollten als Fehler gemeldet werden. Wenn eine Minor- oder Patch -Version veröffentlicht wird, die die Kompatibilität nach hinten ausbricht, sollte diese Version sofort geschleudert werden und/oder eine neue Version sofort veröffentlicht werden, die die Kompatibilität wiederherstellt. Durch die Veränderung der öffentlichen API wird nur mit neuen Hauptversionen eingeführt. Als Ergebnis dieser Richtlinie können (und sollten) Sie eine Abhängigkeit von diesem Juwel angeben, indem Sie die pessimistische Versionsbeschränkung mit zwei Ziffern der Präzision verwenden. Zum Beispiel:
spec.add_dependency 'octokit', '~> 3.0'
Die zwischen den Versionen vorgenommenen Änderungen sind auf der Seite der Projektveröffentlichungen zu sehen.
In den meisten Fällen wäre es am besten, Webhooks zu verwenden, aber manchmal liefern Webhooks nicht alle erforderlichen Informationen. In den Fällen, in denen man möglicherweise für Fortschritte befragen oder eine Anfrage zum Ausfall wiederholen muss, haben wir Octopoller entworfen. Octopoller ist ein Micro -Juwel, das sich perfekt für Wiederholungsanfragen eignet.
Octopoller . poll ( timeout : 15 . seconds ) do
begin
client . request_progress # ex. request a long running job's status
rescue Error
:re_poll
end
endDies ist nützlich, wenn Anfragen für den Fortschritt eines langjährigen Jobs gestellt werden (z. B. den Fortschritt eines Quellenimports).
Copyright (C) 2009-2014 Wynn Niederlande, Adam Stacoviak, Erik Michaels-Ober
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist, um die folgenden Bedingungen zu beantragen.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.