Gollumが編集されたらHook受けてSlackに通知する
config.rbに書く
結構雑だけど…あとで直します
require 'net/http' require 'uri' require 'json' GOLLUM_HOST = "GOLLUMを置いているルートのURL" SLACK_API_URL = "SlackのIncoming WebHooksのURL" Gollum::Hook.register(:post_commit, :hook_id) do |committer, sha1| f = lambda { |h| h[h.keys.first].is_a?(Hash) ? "#{h.keys.first}/#{f.call(h[h.keys.first])}" : h.keys.first } path = f.call(committer.index.tree).gsub(/\.\w+$/, "") msg = "#{committer.options[:name]} edited <#{GOLLUM_HOST}/#{path}|#{path}>: #{committer.options[:message]}" uri = URI.parse(SLACK_API_URL) https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true req = Net::HTTP::Post.new(uri.request_uri) payload = { "text" => msg, "username" => "gollum", }.to_json req.body = payload https.request(req) end
GollumのHookからWikiページのパスを取ってくるのが大変だった。どこかに入ってないものかと思ったんだけどうまく取れないっぽくて、結局index.treeを取ってきて自前でゴリゴリ作るしか無いっぽかった。 ComitterのObjectを見て、fileがcreate modeかedit modeかとかを見ればもっと詳細なものを通知できるのではないかと思う。