4

Github は、bugzilla、campfire、basecamp などの他のサービスにコミットをプッシュするための github-services フックを開発しました。

同じ github-services フックを使用して、アプリケーション データを他のサービスにプッシュできますか? はいの場合、どのようにgithub-servicesを Rails アプリケーションに統合できますか?

ヘルプはありますか?なにか提案を ?

更新github-services フック ソース コードを Rails アプリケーション内の Sinatra アプリケーションとして統合できますか? アプリケーショントリガーから他のサービス (bugzilla、campfire、basecam、twitter) フックを呼び出すにはどうすればよいですか?

例として、あるユーザーが他のユーザーのウォールに何かを投稿すると、メッセージは bugzilla、campfire、basecamp、twitter などの他のサービスに送信される必要があります ...

4

2 に答える 2

7

Post-Receive Urlは、このような通知を実行するための最も単純なフックです。リポジトリでPOSTa が実行されるたびに、事前構成された URL への a をトリガーします。push

Web フックのテストに関するこのGithub.help ページから始めて、POSTされるものの形式とサービスがどのように反応するかを理解できます。これは、非常に便利なサービスPostBinのおかげで行われます。

このヘルプ ページでは、POST された JSON を解析するために Sinatra サーバーに実装する必要があるものの簡単な例を示します。

post '/' do
    push = JSON.parse(params[:payload])
    "I got some JSON: #{push.inspect}"
end

この要点はもう少し進んで、非常に基本的な JSON データ抽出を示しています。

さらに先に進みたい場合は、GitHub APIを使用して、追加のフックを構成して、より多くのイベント (新しい問題、新しいフォーク、ダウンロードなど) をリッスンできます。

于 2011-12-24T08:54:32.537 に答える
1

アプリのデータを他の多くの Web サービスに投稿する簡単な方法を探していると思います。

github-services は、git コミット情報を取得し、そのコミット情報を受け入れる他のサービスにプッシュするように設計されています...したがって、アプリのデータがgithub のペイロードと十分に似ている場合、github-services で動作する他のサービスがアプリで動作します。 .

しかし、あなたのアプリは github とは異なり、データは git コミットとは異なると思います。その場合、アプリにイベント ハンドラーを実装する方法の例として、「services/」のコードを利用できます。これは Campfire 用に Tinder gem を使用します。たとえば、https ://github.com/github/github-services/blob/master/services/campfire.rb です。

その後、WallPostsController#create は、選択した形式でデータをさまざまなサービスに投稿するメソッドを呼び出すことができます。多くのサービスに投稿する場合、多くの外部サービスへの呼び出しにはかなりの時間がかかるため、非同期ジョブ (DelayedJob、resque など) で投稿することをお勧めします。

于 2011-12-24T19:03:47.167 に答える