RubyでProductHuntのランキングをSlackに流す
タイトル通りですが、SlackのSlashコマンドを使って写真のようなProductHuntのToday'sランキングを流してくれるBotを作成します。
使用技術
ProductHuntのランキングスクレイパーを作成する
まず、欲しい情報を扱うためのモデルクラスを作成します。 とりあえず、Productモデルを作成しましました。 ProductHuntからプロダクトの単位ごとにスクレイピングをし、作成したインスタンスに格納します。
詳しくは、以下のリポジトリを見てください。
def scrape(doc) name = doc.css('h3').text description = doc.css('p').text category = doc.css('span.font_9d927.grey_bbe43').text detail_url = 'https://www.producthunt.com' + doc.css('a.link_523b9').attribute('href').value product = Product.new(name, description,category, detail_url) product end
Slack Slash Commandの準備
ここから、Slack Appを作成しIncoming Webhooksでwebhook urlとSlash Commandを作成します。
ローカルで開発する場合
Slash CommandはRequest Urlを指定しないといけませんが、localhost:3000
などのように外部から見えないURLは選択することができません。よって、ローカルではSlash Commandを使って開発するためにngrokを使用します。ngrokを使用することでローカルで立てたサーバーを外部からアクセスできるようにします。
Slack通知
Slack通知には、Slack Notifierを使用しました。