まっしろけっけ

めもてきなやーつ

nagareboshiっていうgemをつくったよ

nagareboshiというgemを作成して公開したのでお知らせてきな

なにをする為のものか

googlepubsubhubbubを使う為のもの

pubsubhubbub is 何?

こことかに詳細は書いてありますが、
作成したwebページをgoogleにインデックスさせるには今までsitemap.xmlにURLを記述し、
google botがsitemap.xmlの内容を不定期に読みにきてインデックスされるのが一般的でした。

この場合インデックスされるまでに時間がかかったり、
その他諸々問題がありましたがpubsubhubbubを使用すると、
こちらから「新しいページ作成したからインデックスに追加して!」というのをpushできる仕組み

pubsubhubbub気象庁のページの図が分かりやすいかと(気象庁の場合xmlの配信に使っているみたいですね)

使い方

shiro16/nagareboshi · GitHubこちらのREADMEでも記述してますが簡単に説明

1.initialize

Nagareboshi.configure do |config|
  config.send = true # sendをtrueにすると実際にPOSTでデータが送られます。
  config.send = Rails.env.production? # Railsの場合はこのような記述で本番環境でのみ送信されるので安全です。
end

2.URLをインデックスさせる

Nagareboshi::Sender.publish("http://example.com/") # http://example.com/をインデックスさせてみる

※ HTTP status 204が返ってくるみたいです

3.複数のURLをまとめてインデックスさせる

urls = ["http://example.com/", "http://example.com/1"]
Nagareboshi::Sender.publish(urls)

※この方法はこちらのページで下記のような記述があるので同じキーで複数データを投げているのですがgoogle先生がいい感じにしてくれるのかが謎なので心配な方は2の方法を使った方がいいかもです。

hub.url equal to the feed URL of the feed that has been updated. This field may be repeated to indicate multiple feeds that have been updated

こちらに関してはもう少し調査します。

4.デバッグ

configureでどちらかを設定すればデバッグ等もしやすいかと思います。

Nagareboshi.configure do |config|
  config.host = "localhost" # requestをlocalhostに送る
  config.send = false # 実際にrequestを送らない設定
end

その他

  • 今回gemを作ろうと思ったきっかけがここのmethod名の実装をしてみたかっただけだとかそうじゃないとかいう噂
  • subscribe用のmethodも今後updateで対応していきたい
  • google先生が公開しているgemも実はあります。igrigorik/PubSubHubbub · GitHub
  • はじめて予約投稿機能を使ってみた