우리는 최근
4-stable브랜치로 이름 을main으로 바꿨습니다. 이는 Octokit의 코드를 로컬로 변경하는 경우 영향을 줄 수 있습니다. 자세한 내용과 새 지점 이름에 대한 로컬 클론을 재구성하는 단계는이 게시물을 확인하십시오.
Github API 용 Ruby Toolkit.
업그레이드? 새로운 주요 버전으로 부딪 치기 전에 업그레이드 가이드를 확인하십시오.
API 래퍼는 쓰여진 언어의 관용구를 반영해야합니다. Octokit.rb는 Ruby 컨벤션을 따르는 플랫 API 클라이언트에 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
... 또는 보석에 추가하십시오
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' } ) 대부분의 방법은 API 응답에서 반환 된 필드에 대한 도트 표기법 및 [] 액세스를 제공하는 Resource 객체를 반환합니다.
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 컬렉션으로 연결됩니다.
대부분의 방법은 Resource 객체 또는 부울을 반환하지만 때로는 RAW HTTP 응답 헤더에 액세스해야 할 수도 있습니다. Client#last_response 사용하여 마지막 HTTP 응답에 액세스 할 수 있습니다.
user = client . user 'andrewpthorp'
response = client . last_response
etag = response . headers [ :etag ] API가 오류 응답을 반환하면 Octokit은 Ruby 예외를 제기합니다.
API에서 반환 한 오류에 따라 다양한 예외를 제기 할 수 있습니다.
400 Bad Request 응답은 Octokit::BadRequest 오류로 이어집니다.403 Forbidden 오류는 Octokit::TooManyRequests 오류 모든 다른 예외 클래스는 Octokit::Error 에서 상속되어 #response_status , #response_headers 및 #response_body 노출시킵니다. 유효성 검사 오류의 경우 #errors API가 반환 한 세부 정보와 함께 Hash Array 반환합니다.
Octokit은 Github API에서 지원하는 다양한 인증 방법을 지원합니다.
GitHub 사용자 이름과 비밀번호 사용은 인증 요청을 시작하는 가장 쉬운 방법입니다.
client = Octokit :: Client . new ( :login => 'defunkt' , :password => 'c0d3b4ssssss!' )
user = client . user
user . login
# => "defunkt"기본 인증을 사용하면 신속하게 시작할 수 있지만 OAUTH 액세스 토큰은 사용자를 대신하여 인증하는 선호하는 방법입니다.
Oauth Access Tokens는 사용자 이름과 비밀번호를 사용하여 두 가지 주요 이점을 제공합니다.
Octokit 클라이언트와 Access Token을 사용하려면 :access_token 옵션 매개 변수에 대한 토큰을 전달하십시오.
client = Octokit :: Client . new ( :access_token => "<your 40 char token>" )
user = client . user
user . login
# => "defunkt"GitHub 계정 설정을 통해 액세스 토큰을 만들 수 있습니다.
2 단계 인증은 더 많은 정보를 로그인 할 수 있도록 계정에 추가 보안을 제공합니다.
API 호출에 2 단계 인증을 사용하면 필요한 헤더를 옵션으로 추가하는 것만 큼 간단합니다.
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 API는 OAUTH 토큰을 기본 암호로 사용하기 때문에 다음과 같습니다.
machine api.github.com
login defunkt
password <your 40 char token>
참고 : NetRC에 대한 지원을 위해서는 NETRC GEM을 gemfile 또는 .gemspec 에 추가해야합니다.
Octokit은 또한 OAUTH 응용 프로그램 클라이언트 자격 증명을 사용하여 응용 프로그램 전용 인증을 지원합니다. 애플리케이션 자격 증명을 사용하면 더 높은 요율 제한을 활용하기 위해 애플리케이션을 대신하여 익명의 API 호출이 발생합니다.
client = Octokit :: Client . new
:client_id => "<your 20 char id>" ,
:client_secret => "<your 40 char secret>"
user = client . user 'defunkt'Octokit.rb는 또한 생성 된 JWT 토큰이 필요한 GitHub 앱을 사용하여 인증을 지원합니다.
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 API 리소스가 페이지를 찍습니다. API는 통화에 :page 매개 변수를 추가하기 시작할 수 있지만 API는 Link 응답 헤더에서 HyperMedia Link Relations에서 다음, 이전 및 마지막 페이지에 대한 링크를 반환합니다.
issues = client . issues 'rails/rails'
issues . concat client . get ( client . last_response . rels [ :next ] . href )작은 자원 목록의 경우 Octokit은 자동 페이지 매출을 제공합니다. 이것이 활성화되면 Paginated Resources를 요청하면 모든 페이지의 결과를 단일 배열로 가져 와서 연결합니다.
client . auto_paginate = true
issues = client . issues 'rails/rails'
issues . length
# => 702모든 Octokit 클라이언트 인스턴스에 대한 자동 페이지 매출을 활성화 할 수도 있습니다.
Octokit . configure do | c |
c . auto_paginate = true
end 참고 : Octokit Auto Pagination은 페이지 크기를 최대 100 으로 설정하고 요금 제한을 과도하게 설명하지 않으려면 큰 목록을 통과하기 위해 사용자 정의 패턴을 사용하고 싶을 것입니다.
약간의 설정으로 GitHub Enterprise 인스턴스와 함께 Octokit을 사용할 수도 있습니다.
GitHub Enterprise의 "일반"github.com API와 상호 작용하려면 호스트 이름과 일치하도록 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 API는 다른 클라이언트 아래에 있습니다 : EnterpriseAdminClient . 이 API를 사용하려면 관리자 계정이 있어야합니다.
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 API는 별도의 클라이언트 아래에 있습니다. 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 . newGitHub Enterprise 설치를 처음 설정하는 동안 SSL을 임시로 비활성화해야 할 수도 있습니다. 다음 구성으로 수행 할 수 있습니다.
client . connection_options [ :ssl ] = { :verify => false } 회전하는 것을 기억하십시오 :verify 안전한 의사 소통에 중요하므로 true 로 다시 확인하십시오.
Octokit::Client 새 클라이언트 인스턴스를 생성 할 때 다양한 옵션을 수락하지만 Octokit의 구성 API를 사용하면 모듈 수준에서 구성 옵션을 설정할 수 있습니다. 공유 기본값을 기반으로 여러 클라이언트 인스턴스를 작성하는 경우 특히 편리합니다. 옵션 변경은 새로운 인스턴스에만 영향을 미치며 기존 Octokit::Client 인스턴스를 이전 옵션으로 수정하지 않습니다.
{Octokit :: configurable}의 모든 쓰기 속성은 한 번에 하나씩 설정할 수 있습니다.
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}에 지정되어 있습니다. 많은 속성에서 Octokit의 기본값을 반환하기 전에 ENV에서 기본값을 찾습니다.
# Given $OCTOKIT_API_ENDPOINT is "http://api.github.dev"
client . api_endpoint
# => "http://api.github.dev" 개발 미리보기의 감가 상각장 및 API 엔드 포인트는 기본적으로 STDOUT에 인쇄되므로 ENV OCTOKIT_SILENT=true 설정하여 비활성화 할 수 있습니다.
기본적으로 Octokit은 네트워크 요청을 시간 초과하지 않습니다. 시간 초과를 설정하려면 Faraday 시간 초과 설정을 Octokit의 connection_options 설정으로 전달하십시오.
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}는 Faraday에 구축 된 하이퍼 미디어 클라이언트 인 Sawyer를 사용합니다.
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 } ) . dataOctokit을 순수한 Hypermedia API 클라이언트로 사용하려면 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에서 업그레이드 할 때 몇 가지 변경 사항이 포함됩니다.
기본 미디어 유형은 이제 beta 대신 v3 입니다. 이전 미디어 유형을 요청 해야하는 경우 클라이언트의 기본 미디어 유형을 설정할 수 있습니다.
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_paginate 입니다Hashie::Mash 제거되었습니다. 응답은 이제 Sawyer::Resource 객체를 반환합니다. 이 새로운 유형은 주로 루비 Hash 와 비슷하지만 Hashie::Mash API를 완전히 지원하지는 않습니다.Octokit::TooManyRequests 및 Octokit::TooManyLoginAttemptssearch_* 메소드는 이제 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 캐시를 사용할 수 있습니다.
보석을 보석에 추가하십시오
gem 'faraday-http-cache'
다음으로, 자신의 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 일단 구성되면 미들웨어는 ETAG 지문을 기반으로 캐시에 응답을 저장하고 동일한 리소스에 대한 향후 304 응답을 위해 백업을 제공합니다. 고급 사용에 대해서는 Project ReadMe를 참조하십시오.
Octokit을 현지에서 해킹하려면 프로젝트를 가능한 한 고통스럽지 않은 부트 스트랩으로 만들려고 노력합니다. 해킹, 복제 및 실행을 시작하려면 :
script/bootstrap
이렇게하면 프로젝트 종속성을 설치하고 실행할 수 있습니다. Octokit을 찌르기 위해 Ruby 콘솔을 실행하려면 다음과 같이 크랭크 할 수 있습니다.
script/console
bundle exec rspec , bundle console 등 대신 ./script 의 스크립트를 사용하면 종속성이 최신 상태인지 확인하십시오.
우리는 Octokit.rb와 더 큰 Octokit 커뮤니티가 개방적이고 환영하는 환경을 원합니다. 정신과 문자 행동 강령으로 읽고 따르십시오.
Octokit은 테스트 실행 중에 API 비품을 녹음하고 재생하기 위해 VCR을 사용합니다. 이 카세트 (비품)는 spec/cassettes 폴더의 GIT 프로젝트의 일부입니다. 새 카세트를 녹음하지 않으면 기존 카세트로 사양을 실행할 수 있습니다.
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 응용 프로그램 클라이언트 ID를 테스트하십시오. |
OCTOKIT_TEST_GITHUB_CLIENT_SECRET | OAUTH 응용 프로그램 클라이언트 비밀을 테스트하십시오. |
OCTOKIT_TEST_GITHUB_REPOSITORY | 테스트 저장소에 파괴적인 작업을 수행하기 위해 중요한 저장소로 설정해서는 안됩니다. 존재 하지 않는 경우 테스트 제품군에서 자동으로 생성 : api-sandbox |
OCTOKIT_TEST_GITHUB_ORGANIZATION | 테스트 조직. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_LOGIN | Github Enterprise 로그인 이름. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_TOKEN | Github Enterprise Token. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_PASSWORD | Github 엔터프라이즈 관리 콘솔 비밀번호. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_ENDPOINT | Github Enterprise HostName. |
OCTOKIT_TEST_GITHUB_ENTERPRISE_MANAGEMENT_CONSOLE_ENDPOINT | Github 엔터프라이즈 관리 콘솔 엔드 포인트. |
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 | 위에 지정된 GitHub 통합 설치. |
OCTOKIT_TEST_INTEGRATION_PEM_KEY | 통합에서 생성 된 개인 키로의 파일 경로. |
카세트를 정기적으로 새로 고치기 때문에 새로운 사양을 작성할 때 점을 명심하십시오.
이 라이브러리는 지원을 목표로하며 다음 루비 구현에 대해 테스트됩니다.
이 루비 버전 중 하나에서 무언가가 작동하지 않으면 버그입니다.
이 라이브러리는 다른 루비 구현에서 실수로 작동하거나 작동하는 것처럼 보이지만 위에 나열된 버전에 대해서만 지원됩니다.
이 라이브러리가 다른 루비 버전을 지원하기를 원한다면 자원 봉사자가 될 수 있습니다. 관리자가되면 모든 테스트가 해당 구현을 실행하고 전달하도록해야합니다. 구현에 무언가가 끊어지면 적시에 패치를 제공 할 책임이 있습니다. 주요 릴리스 시점에 특정 구현에 대한 중요한 문제가 존재하는 경우 해당 루비 버전에 대한 지원이 삭제 될 수 있습니다.
이 라이브러리는 시맨틱 버전 2.0.0을 준수하는 것을 목표로합니다. 이 계획의 위반은 버그로보고해야합니다. 구체적으로, 뒤로 호환성이 나오는 마이너 또는 패치 버전이 릴리스되면 해당 버전은 즉시 YANKED를 사용하고/또는 호환성을 복원하는 새 버전을 즉시 해제해야합니다. 공개 API에 대한 변경 사항은 새로운 주요 버전으로 만 소개됩니다. 이 정책의 결과로, 당신은 두 자리의 정밀도를 가진 비관적 버전 제약을 사용 하여이 보석에 대한 의존성을 지정할 수 있습니다. 예를 들어:
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 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게는 허가가 부여됩니다. 소프트웨어의 사용, 복사, 수정, 합병, 배포, 배포, 숭고 및/또는 소프트웨어의 사본을 판매 할 권한을 포함하여 제한없이 소프트웨어를 처리 할 수 있도록 소프트웨어를 제공 할 권한이 없습니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다.