لاحظ أننا قمنا مؤخرًا بإعادة تسمية الفرع
4-stableإلىmain. قد يؤثر هذا عليك إذا كنت تقوم بإجراء تغييرات على رمز Octokit محليًا. لمزيد من التفاصيل والخطوات لإعادة تكوين استنساخك المحلي لاسم الفرع الجديد ، تحقق من هذا المنشور.
مجموعة أدوات Ruby لجيثب واجهة برمجة تطبيقات.
الترقية؟ تحقق من دليل الترقية قبل الاصطدام بإصدار رئيسي جديد.
يجب أن تعكس أغلفة API تعبيرات اللغة التي كتبت فيها. يلف Octokit.rb واجهة برمجة تطبيقات Github في عميل API المسطح الذي يتبع اتفاقيات الياقوت ولا يتطلب سوى القليل من المعرفة بالراحة. تحتوي معظم الطرق على وسيط موضعية للإدخال المطلوب واختيارات التجزئة للمعلمات أو الرؤوس أو الخيارات الأخرى الاختيارية:
client = Octokit :: Client . new
# Fetch a README with Accept header for HTML format
client . readme 'al3x/sovereign' , :accept => 'application/vnd.github.html' تثبيت عبر Rubygems
gem install octokit
... أو أضف إلى gemfile الخاص بك
gem "octokit"
الوصول إلى المكتبة في روبي:
require 'octokit'
أساليب API متوفرة كطرق مثيل العميل.
# 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 . userعند تمرير معلمات إضافية للحصول على طلب استناد ، استخدم بناء الجملة التالي:
# 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' } ) تقوم معظم الطرق بإرجاع كائن Resource يوفر تدوين DOT و [] الوصول إلى الحقول التي يتم إرجاعها في استجابة API.
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" ملاحظة: يتم إعدام حقول URL في مجموعة .rels RELS للحصول على دعم وسهولة Hyper Medive.
على الرغم من أن معظم الطرق تُرجع كائن Resource أو منطقية ، فقد تحتاج أحيانًا إلى الوصول إلى رؤوس استجابة HTTP الخام. يمكنك الوصول إلى آخر استجابة HTTP مع Client#last_response :
user = client . user 'andrewpthorp'
response = client . last_response
etag = response . headers [ :etag ] عندما تُرجع واجهة برمجة التطبيقات استجابة خطأ ، ستقوم Octokit بإثارة استثناء الياقوت.
يمكن إثارة مجموعة من الاستثناءات المختلفة اعتمادًا على الخطأ الذي تم إرجاعه بواسطة API - على سبيل المثال:
400 Bad Request إلى خطأ Octokit::BadRequest403 Forbidden Octokit::TooManyRequests "معدل محدودة" جميع فئات الاستثناءات المختلفة ترث من Octokit::Error وفضح #response_status ، #response_headers و #response_body . بالنسبة لأخطاء التحقق من الصحة ، ستعيد #errors Array من Hash مع المعلومات التفصيلية التي يتم إرجاعها بواسطة API.
يدعم Octokit طرق المصادقة المختلفة التي تدعمها واجهة برمجة تطبيقات Github:
يعد استخدام اسم المستخدم وكلمة المرور GitHub أسهل طريقة للبدء في تقديم طلبات مصادقة:
client = Octokit :: Client . new ( :login => 'defunkt' , :password => 'c0d3b4ssssss!' )
user = client . user
user . login
# => "defunkt"على الرغم من أن المصادقة الأساسية تتيح لك البدء بسرعة ، فإن رموز الوصول إلى Oauth هي الطريقة المفضلة للمصادقة نيابة عن المستخدمين.
توفر رموز الوصول إلى Oauth فوائد رئيسية على استخدام اسم المستخدم وكلمة المرور الخاصة بك:
لاستخدام رمز الوصول مع عميل Octokit ، مرر الرمز المميز الخاص بك في معلمة خيارات :access_token بدلاً من اسم المستخدم وكلمة المرور الخاصة بك:
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" )
user = client . user
user . login
# => "defunkt"يمكنك إنشاء رموز الوصول من خلال إعدادات حساب GitHub.
تقدم المصادقة ثنائية العوامل الأمان المضافة إلى الحساب عن طريق طلب المزيد من المعلومات لتسجيل الدخول.
يعد استخدام المصادقة ثنائية العوامل لمكالمات API أمرًا بسيطًا مثل إضافة الرأس المطلوب كخيار:
client = Octokit :: Client . new
:login => 'defunkt' ,
:password => 'c0d3b4ssssss!'
user = client . user ( "defunkt" , :headers => { "X-GitHub-OTP" => "<your 2FA token>" } ) يدعم Octokit قراءة بيانات الاعتماد من ملف NETRC (التخلف عن ~/.netrc ). بالنظر إلى هذه الخطوط في NETRC الخاص بك:
machine api.github.com
login defunkt
password c0d3b4ssssss!
يمكنك الآن إنشاء عميل مع بيانات الاعتماد هذه:
client = Octokit :: Client . new ( :netrc => true )
client . login
# => "defunkt"لكني أريد استخدام oauth تقول. نظرًا لأن واجهة برمجة تطبيقات Github تدعم استخدام رمز Oauth ككلمة مرور أساسية ، يمكنك تمامًا:
machine api.github.com
login defunkt
password <your 40 char token>
ملاحظة: يتطلب دعم NETRC إضافة GEM NETRC إلى GEMFILE أو .gemspec .
يدعم Octokit أيضًا مصادقة التطبيق فقط باستخدام بيانات اعتماد عميل تطبيق OAuth. سيؤدي استخدام بيانات اعتماد التطبيق إلى إجراء مكالمات واجهة برمجة تطبيقات مجهولة نيابة عن التطبيق من أجل الاستفادة من الحد الأعلى للمعدل.
client = Octokit :: Client . new
:client_id => "<your 20 char id>" ,
:client_secret => "<your 40 char secret>"
user = client . user 'defunkt'يدعم Octokit.rb أيضًا المصادقة باستخدام تطبيق GitHub ، والذي يتطلب رمز JWT الذي تم إنشاؤه.
client = Octokit :: Client . new ( :bearer_token => "<your jwt token>" )
client . app
# => about GitHub App info النتائج الافتراضية من Github API هي 30 ، إذا كنت ترغب في إضافة المزيد ، يجب عليك القيام بذلك أثناء تكوين Octokit.
Octokit :: Client . new ( access_token : "<your 40 char token>" , per_page : 100 ) العديد من موارد واجهة برمجة تطبيقات Github متوقفة. على الرغم من أنك قد تميل إلى البدء في الإضافة :page إلى مكالماتك ، فإن واجهة برمجة التطبيقات تُرجع الروابط إلى الصفحات التالية والسابقة والأخير لك في رأس استجابة Link كعلاقات ارتباط HyperMedia.
issues = client . issues 'rails/rails'
issues . concat client . get ( client . last_response . rels [ :next ] . href )لقوائم الموارد الصغيرة ، يوفر Octokit ترقيم ترقيم السيارات. عندما يتم تمكين ذلك ، ستجلب المكالمات للموارد المترتبة وتسلسل النتائج من كل صفحة إلى صفيف واحد:
client . auto_paginate = true
issues = client . issues 'rails/rails'
issues . length
# => 702يمكنك أيضًا تمكين ترقيم التلقائي لجميع مثيلات عميل Octokit:
Octokit . configure do | c |
c . auto_paginate = true
end ملاحظة: على الرغم من أن ترقيم ترقيم Octokit Auto سيعين حجم الصفحة على الحد الأقصى 100 ، ويسعى إلى عدم تجاوز حد السعر الخاص بك ، فربما تريد استخدام نمط مخصص لاجتياز القوائم الكبيرة.
مع القليل من الإعداد ، يمكنك أيضًا استخدام Octokit مع مثيل GitHub Enterprise الخاص بك.
للتفاعل مع واجهات برمجة تطبيقات GitHub.com "العادية" في GitHub Enterprise ، ما عليك سوى تكوين api_endpoint لمطابقة اسم المضيف الخاص بك. على سبيل المثال:
Octokit . configure do | c |
c . api_endpoint = "https://<hostname>/api/v3/"
end
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" ) واجهات برمجة تطبيقات GitHub Enterprise Admin هي تحت عميل مختلف: EnterpriseAdminClient . ستحتاج إلى حساب المسؤول من أجل استخدام واجهات برمجة التطبيقات هذه.
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 واجهات برمجة تطبيقات GitHub Enterprise Management Console هي أيضًا تحت عميل منفصل: EnterpriseManagementConsoleClient . من أجل استخدامه ، ستحتاج إلى توفير كلمة مرور وحدة التحكم الإدارية الخاصة بك بالإضافة إلى نقطة النهاية إلى وحدة التحكم الإدارية الخاصة بك. هذا يختلف عن نقطة نهاية API الواردة أعلاه.
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 . newقد تحتاج إلى تعطيل SSL مؤقتًا أثناء إعداد تثبيت GitHub Enterprise أولاً. يمكنك القيام بذلك مع التكوين التالي:
client . connection_options [ :ssl ] = { :verify => false } تذكر أن تدور :verify من العودة إلى true ، لأنه من المهم للتواصل الآمن.
بينما يقبل Octokit::Client مجموعة من الخيارات عند إنشاء مثيل عميل جديد ، تتيح لك واجهة برمجة تطبيقات تكوين Octokit تعيين خيارات التكوين الخاصة بك على مستوى الوحدة النمطية. هذا مفيد بشكل خاص إذا كنت تقوم بإنشاء عدد من مثيلات العميل بناءً على بعض الإعدادات الافتراضية المشتركة. يؤثر تغيير الخيارات على مثيلات جديدة فقط ولن يعدل مثيلات Octokit::Client التي تم إنشاؤها مع الخيارات السابقة.
يمكن تعيين كل سمة قابلة للكتابة في {octokit :: configable} واحدة في وقت واحد:
Octokit . api_endpoint = 'http://api.github.dev'
Octokit . web_endpoint = 'http://github.dev'أو في دفعة:
Octokit . configure do | c |
c . api_endpoint = 'http://api.github.dev'
c . web_endpoint = 'http://github.dev'
endيتم تحديد قيم التكوين الافتراضية في {Octokit :: Default}. ستبحث العديد من السمات عن قيمة افتراضية من ENV قبل إرجاع افتراضي Octokit.
# Given $OCTOKIT_API_ENDPOINT is "http://api.github.dev"
client . api_endpoint
# => "http://api.github.dev" تحذيرات الإهمال ونقاط نهاية واجهة برمجة التطبيقات في تحذيرات معاينة التطوير تتم طباعة إلى stdout بشكل افتراضي ، يمكن تعطيلها عن طريق تعيين env OCTOKIT_SILENT=true .
افتراضيًا ، لا تطلب Octokit طلبات شبكة المهلة. لتعيين مهلة ، تمرير إعدادات مهلة فاراداي إلى إعداد connection_options Octokit.
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
}
}
endيجب عليك تعيين مهلة لتجنب وحدة مهلة Ruby ، والتي يمكن أن تخترق الخادم الخاص بك. فيما يلي بعض الموارد لمزيد من المعلومات حول هذا:
بدءًا من الإصدار 2.0 ، يتم تمكين Octokit. تحت الغطاء ، يستخدم {Octokit :: Client} Sawyer ، وهو عميل Hypermedia مبني على Faraday.
لا تحتوي الموارد التي يتم إرجاعها بواسطة أساليب Octokit على البيانات فحسب ، بل علاقات الارتباط المفرطة:
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" عند معالجة استجابات API ، يتم إعدام جميع سمات *_url في مجموعة علاقات الارتباطات. أي سمة عنوان url تصبح .rels[:self] .
قد تلاحظ أن العديد من علاقات الارتباط لها أصحاب نائبة متغيرة. يدعم Octokit قوالب URI لتوسيع URI المعلمة:
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 } ) . dataإذا كنت ترغب في استخدام Octokit كعميل API Hypermedia Pure ، فيمكنك البدء في جذر API ومتابعة علاقات الارتباط من هناك:
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 إلى أن يكون محركًا للوسائط المفرطة ، مما يؤدي إلى إزالة بناء عنوان URL الداخلي المستخدم حاليًا في جميع أنحاء العميل.
الإصدار 4.0
state في خيارات الطريقة.يتضمن الإصدار 3.0 تغييرًا في كسر عند الترقية من V2.xx:
نوع الوسائط الافتراضي هو الآن v3 بدلاً من beta . إذا كنت بحاجة إلى طلب نوع الوسائط الأقدم ، فيمكنك تعيين نوع الوسائط الافتراضي للعميل:
Octokit . default_media_type = "application/vnd.github.beta+json"أو لكل طلب
client . emails ( :accept => "application/vnd.github.beta+json" ) تمت إزالة طريقة Octokit::Client#create_download التي تم نشرها منذ فترة طويلة.
يتضمن الإصدار 2.0 مصنعًا Client تم إعادة كتابته بالكامل والذي يذكر الآن مثيلات العميل بناءً على خيارات التكوين الفريدة. تشمل التغييرات الكبرى أيضًا:
:oauth_token الآن :access_token:auto_traversal الآن :auto_paginateHashie::Mash . ردود الآن إرجاع كائن Sawyer::Resource . يتصرف هذا النوع الجديد في الغالب مثل Hash الياقوت ، لكنه لا يدعم تمامًا Hashie::Mash API.Octokit::TooManyRequests و Octokit::TooManyLoginAttemptssearch_* من v1.x في legacy_search_*DateTime المناسبة. الإصدارات السابقة التي تم إخراج حقول DateTime ككائنات "سلسلة". نظرًا لأن Octokit توظف Faraday تحت الغطاء ، يمكن تمديد بعض السلوك عن طريق الوسيطة.
في كثير من الأحيان ، يساعد في معرفة ما يفعله Octokit تحت غطاء محرك السيارة. يمكنك إضافة مسجل إلى البرامج الوسيطة التي تمكنك من إلقاء نظرة خاطفة على حركة HTTP الأساسية:
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"
...
انظر Faraday ReadMe لمزيد من سحر الوسيطة.
إذا كنت ترغب في زيادة الأداء ، أو تمدد حد معدل API الخاص بك ، أو تجنب دفع ضريبة الوسائط المفرطة ، يمكنك استخدام ذاكرة التخزين المؤقت Faraday HTTP.
أضف الأحجار الكريمة إلى Gemfile
gem 'faraday-http-cache'
بعد ذلك ، قم ببناء الوسيطة الخاصة بـ Faraday:
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 بمجرد تكوينه ، ستخزن الوسيطة الاستجابات في ذاكرة التخزين المؤقت بناءً على بصمة ETAG وتخدم تلك النسخ الاحتياطي لاستجابات 304 في المستقبل لنفس المورد. انظر مشروع ReadMe للاستخدام المتقدم.
إذا كنت ترغب في الاختراق على Octokit محليًا ، فإننا نحاول جعل Bootstrapping للمشروع غير مؤلم قدر الإمكان. لبدء القرصنة والاستنساخ والتشغيل:
script/bootstrap
سيؤدي ذلك إلى تثبيت تبعيات المشروع وتجعلك تعمل وتشغيلها. إذا كنت ترغب في تشغيل وحدة تحكم Ruby لتخطي Octokit ، فيمكنك أن ترفع معها:
script/console
إن استخدام البرامج النصية في ./script بدلاً من bundle exec rspec ، bundle console ، إلخ. يضمن تبعياتك محدثة.
نريد أن تكون كل من مجتمعات Octokit.rb ومجتمعات Octokit أكبر مفتوحة ومرحبة. يرجى قراءة ومتابعة كل من الروح ورواية قواعد السلوك.
يستخدم Octokit VCR لتسجيل وتركيبات واجهة برمجة تطبيقات مرة أخرى أثناء عمليات الاختبار. هذه الأشرطة (التركيبات) هي جزء من مشروع GIT في مجلد spec/cassettes . إذا كنت لا تسجل أشرطة جديدة ، فيمكنك تشغيل المواصفات باستخدام أشرطة الكاسيت الحالية مع:
script/test
يستخدم Octokit المتغيرات البيئية لتخزين بيانات الاعتماد المستخدمة في الاختبار. إذا كنت تختبر نقطة نهاية API التي لا تتطلب المصادقة ، فيمكنك الابتعاد دون أي تكوين إضافي. بالنسبة للجزء الأكبر ، تستخدم الاختبارات عميلًا مصادقًا ، باستخدام رمز مميز مخزّن في ENV['OCTOKIT_TEST_GITHUB_TOKEN'] . هناك العديد من طرق المصادقة المختلفة المستخدمة عبر API. فيما يلي القائمة الكاملة للمتغيرات البيئية القابلة للتكوين لاختبار Octokit:
| متغير ENV | وصف |
|---|---|
OCTOKIT_TEST_GITHUB_LOGIN | اسم تسجيل الدخول Github (يفضل أن يتم إنشاؤه خصيصًا للاختبار ضد). |
OCTOKIT_TEST_GITHUB_PASSWORD | كلمة المرور للاختبار github تسجيل الدخول. |
OCTOKIT_TEST_GITHUB_TOKEN | الرمز المميز للوصول الشخصي للاختبار تسجيل الدخول إلى GitHub. |
OCTOKIT_TEST_GITHUB_CLIENT_ID | اختبار معرف عميل تطبيق Oauth. |
OCTOKIT_TEST_GITHUB_CLIENT_SECRET | اختبار Oauth تطبيق العميل سر. |
OCTOKIT_TEST_GITHUB_REPOSITORY | مستودع اختبار لأداء الإجراءات المدمرة ضد ذلك ، لا ينبغي تعيين ذلك على أي مستودع للأهمية. تم إنشاؤه تلقائيًا بواسطة مجموعة الاختبار إذا كان غير موجود api-sandbox |
OCTOKIT_TEST_GITHUB_ORGANIZATION | اختبار منظمة. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_LOGIN | GitHub Enterprise Login Name. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_TOKEN | Github Enterprise Token. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_PASSWORD | GitHub Enterprise Management Console Password. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_ENDPOINT | Github Enterprise Hostname. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_ENDPOINT | Github Enterprise Management Console نقطة نهاية. |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_ENDPOINT | GitHub Enterprise Server GHES إدارة نقطة النهاية. |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_USERNAME | GitHub Enterprise Server GHEs إدارة اسم المستخدم. |
OCTOKIT_TEST_GITHUB_MANAGE_GHES_PASSWORD | GitHub Enterprise Server GHEs إدارة كلمة المرور. |
OCTOKIT_TEST_GITHUB_INTEGRATION | GitHub تكامل تملكه مؤسسة الاختبار الخاصة بك. |
OCTOKIT_TEST_GITHUB_INTEGRATION_INSTALLATION | تثبيت تكامل جيثب المحدد أعلاه. |
OCTOKIT_TEST_INTEGRATION_PEM_KEY | مسار الملف إلى المفتاح الخاص الذي تم إنشاؤه من تكاملك. |
نظرًا لأننا نعيد تحديث أشرطة الكاسيت بشكل دوري ، يرجى وضع بعض النقاط في الاعتبار عند كتابة مواصفات جديدة.
تهدف هذه المكتبة إلى الدعم واختبارها مقابل تطبيقات الياقوت التالية:
إذا كان هناك شيء لا يعمل على أحد إصدارات Ruby هذه ، فهذا خطأ.
قد تعمل هذه المكتبة عن غير قصد (أو يبدو أنها تعمل) على تطبيقات Ruby الأخرى ، ولكن سيتم توفير الدعم فقط للإصدارات المذكورة أعلاه.
إذا كنت ترغب في دعم هذه المكتبة إصدارًا آخر من روبي ، فيمكنك التطوع لتكون مشرفًا. إن كونك مشرفًا يستلزم التأكد من أن جميع الاختبارات تعمل وتنقل هذا التنفيذ. عندما ينكسر شيء ما على تطبيقك ، ستكون مسؤولاً عن توفير تصحيحات في الوقت المناسب. في حالة وجود مشكلات حرجة لتنفيذ معين في وقت إصدار كبير ، قد يتم إسقاط دعم هذا الإصدار الياقوت.
تهدف هذه المكتبة إلى الالتزام بالإصدار الدلالي 2.0.0. يجب الإبلاغ عن انتهاكات هذا المخطط باعتبارها الأخطاء. على وجه التحديد ، إذا تم إصدار إصدار ثانوي أو تصحيح يكسر التوافق للخلف ، فيجب أن يتم انتزاع هذا الإصدار فورًا و/أو إصدار إصدار جديد على الفور يعيد التوافق. لن يتم تقديم التغييرات في واجهة برمجة التطبيقات العامة إلا مع إصدارات رئيسية جديدة. نتيجة لهذه السياسة ، يمكنك (وينبغي) تحديد الاعتماد على هذه الأحجار الكريمة باستخدام قيد الإصدار المتشائم مع رقمين من الدقة. على سبيل المثال:
spec.add_dependency 'octokit', '~> 3.0'
يمكن رؤية التغييرات التي تم إجراؤها بين الإصدارات على صفحة إصدارات المشروع.
في معظم الحالات ، سيكون من الأفضل استخدام Webhooks ، ولكن في بعض الأحيان لا توفر Webhooks جميع المعلومات اللازمة. في تلك الحالات التي قد يحتاج فيها المرء إلى الاستطلاع للتقدم أو إعادة محاولة طلب الفشل ، قمنا بتصميم Octopoller. Octopoller هي جوهرة صغيرة مثالية لتقديم طلبات متكررة.
Octopoller . poll ( timeout : 15 . seconds ) do
begin
client . request_progress # ex. request a long running job's status
rescue Error
:re_poll
end
endهذا مفيد عند تقديم طلبات للحصول على تقدم طويل على المدى الطويل (على سبيل المثال ، طلب تقدم استيراد المصدر).
حقوق الطبع والنشر (C) 2009-2014 وين هولندا ، آدم ستاكوفياك ، إريك مايكلز أو أوبر
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج") ، للتعامل في البرنامج دون تقييد ، بما في ذلك على سبيل المثال لا الحصر حقوق استخدام الأشخاص ونسخها ودمجها ودمجها وتوزيعها وتوزيعها على ما يلي:
يجب إدراج إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعدم الانفجار. لا يجوز بأي حال من الأحوال أن يكون المؤلفون أو حاملي حقوق الطبع والنشر مسؤولاً عن أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء في إجراء عقد أو ضرر أو غير ذلك ، ناشئة عن أو خارج البرنامج أو الاستخدام أو غيرها من المعاملات في البرنامج.