<commit_before>---
layout: post
title: horenso introduction
---

[horenso](https://github.com/Songmu/horenso) を導入したので、そのメモ。

> ["horensoというcronやコマンドラッパー用のツールを書いた"](http://www.songmu.jp/riji/entry/2016-01-05-horenso.html)

使い方は、上のブログや README を読んでもらえれば、問題ないかと思います。

下記のようなslack通知させる簡単な`reporter`をRubyでかきました。

```
require 'net/http'
require 'uri'
require 'json'

resp = JSON.parse($stdin.gets)

if resp["exitCode"] != 0 then
  uri = URI.parse("https://hooks.slack.com/services/***")
  payload = {
    text: "```#{JSON.pretty_generate(resp)}```",
    channel: "@yyoshiki41",
    username: "Cron job fails",
    icon_emoji: ":scream_cat:"
  }
  Net::HTTP.post_form(uri, { payload: payload.to_json })
end
```

horensoから受け取ったjsonの`exitCode`をみて、異常終了した時だけ通知させる。

[![]({{ site.url }}/img/posts/horenso/slack.png)]({{ site.url }}/img/posts/horenso/slack.png)

cron以外にも下のような手元で長時間のジョブ実行時に完了通知させるのにも便利。

```
$ horenso -r "ruby /path/to/reprter.rb" -- sleep 1h
```<commit_msg>fixed typo<commit_after>---
layout: post
title: horenso introduction
---

[horenso](https://github.com/Songmu/horenso) を導入したので、そのメモ。

> ["horensoというcronやコマンドラッパー用のツールを書いた"](http://www.songmu.jp/riji/entry/2016-01-05-horenso.html)

使い方は、上のブログや README を読んでもらえれば、問題ないかと思います。

下記のようなslack通知させる簡単な`reporter`をRubyでかきました。

<script src="https://gist.github.com/yyoshiki41/b342c8b62e659536fa910322900c380a.js"></script>

horensoから受け取ったjsonの`exitCode`をみて、異常終了した時だけ通知させる。

[![]({{ site.url }}/img/posts/horenso/slack.png)]({{ site.url }}/img/posts/horenso/slack.png)

cron以外にも下のような手元で長時間のジョブ実行時に完了通知させるのにも便利。

```
$ horenso -r "ruby /path/to/reporter.rb" -- sleep 1h
```
{'fraction_non_alphanumeric': 0.18260333127698952, 'fraction_numerical': 0.028994447871684145, 'mean_word_length': 5.436507936507937, 'pattern_counts': {'":': 1, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 4, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5551192', 'n_tokens_mistral': 924, 'n_tokens_neox': 844, 'n_words': 82}