続・QiitaアドベントカレンダーのはてブランキングをSlackに通知する

2016年(去年)のアドベントカレンダーにこんなの出した。

qiita.com

今年もSpeeeアドベントカレンダーやってるので、会社のSlackに流すようこれをセットした。

1年前に作ったやつを流すためにやったこと

  • Rubyのバージョンアップ(2.3.3 -> 2.4.2)
  • bundle update
    • rubocopのversionがあがったことにより、ソースコード全体に微妙な更新がかかった
  • Qiitaがhttpsになった!
  • アドベントカレンダーページのDOMも微妙に変わったのでxpathを調整
  • Docker化
  • heroku -> AWS Batch

詳しくはdiff見てくれw

Docker化

わかってたことなので今更あえて言う意味あんまないけど、DockerImageにしてしまうとポータビリティがあがってとてもいいですね。

https://hub.docker.com/r/nisshiee/adventcalendar-ranking/

↑publicにしてDocker Hubにpushしてあるので、試してみたい方はご自由にどうぞ。

Docker化でちょっとハマったところ

Rubyの入ったイメージは自分で作ってもいいけど、公式にもRubyイメージが一応ある。

https://hub.docker.com/_/ruby/

あるんだけど、このイメージはロケールが設定されていないので、このまま使うとEncoding.default_externalASCII-8BITになり、ファイル読み込みで死んだりします。

singleton method Encoding.default_external (Ruby 2.4.0)

ちなみに余談ですが、今回はSlackに投稿する本文をerbで定義していて、この日本語入りファイルの読み込みで死にましたw

同じ罠にハマってる人ネット上にちょいちょい居るので、ググれば出てくるんですが、同じようにDockerfileでロケールの設定もしてやります。

adventcalendar-ranking/Dockerfile at v1.1.0 · nisshiee/adventcalendar-ranking · GitHub