octokitを使ってみた

会社の人にoctokit使うとGHEにログインしなくても色々できるよと教えてもらったので、試してみることにした。

octokitのインストール

$ gem install octokit
$ gem list octokit
*** LOCAL GEMS ***

octokit (4.3.0)

Gistを作成するテスト

アクセストークンをGithubで作成して、いい感じに権限を付与してあげる。gistの作成だけだったら、gistにチェックを入れるだけ。
下記がテストしたコード。

require 'octokit'

client = Octokit::Client.new access_token: 'Githubの自分のsettings作ったアクセストークン'
client.create_gist({:files => {'test.md' => {:content => 'octokitのテストだよ'}}})

これで実行してみたらこんな感じでgistが作られてた。これ確かに便利だ〜。
gist

これ使えばチームで使ってるあのツールのあの部分に適用できそう感があるなぁ〜なんて妄想できたのが良かった。
あとでやってみよ。

OSSにプルリクエストを出してマージしていただいた話

先日、下記OSSにプルリクエストを出して、マージしていただいた。

Mackerelはファイルシステムの容量監視が行えるのだけど、暫くは特定のファイルシステムを除外することができなかった。
Makcerelの仕様上、複数のファイルシステムがあった場合、最も使用率が高いシステムがアラートの対象となる。※設定画面で特定のファイルシステムのみを容量監視設定することなどは出来ない。
このため、なにかしらの理由で特定のファイルシステムが使用率100%だと、Mackerelで容量監視を設定した直後にすぐにアラートがあがってしまう。
これを回避するには、なにかしら別のスクリプトを用意するしかなかった。

ところが、今年の2/5に特定のファイルシステムを除外するパラメータが追加された。

このパラメータでは、例えばramディスクを追加して使用しているような場合やシステムで自動的にマウントされてしまって使用率が100%になってしまっているファイルシステムがあっても、除外することが出来る。

前述のpuppet-mackerel_agentはhieradataでパラメータが管理できるので大変便利で使わせていただいてたのだけど、このファイルシステムを除外するパラメータが含まれていなかった。
そこで折角なのでパラメータを追加するPRを出してみたら、マージしていただけたのだ。
これでこのmanifestを使うことで、除外したいファイルシステムもhieraで管理でき、別途プラグインをインストールすること無く一括で容量監視が出来るようになる。

いやー社外の人にPRをマージしてもらえるってすごい嬉しい。
メンテナーみたいなことが出来るようになるときっと楽しいだろうなと思うので、また色々PRチャンスがあれば出していきたい。

RubyでSlack通知

以前シェルでSlack通知のスクリプトを書いていたのだけど、この間書いたRubyプログラムの、

Nokogiriを使ってみる
あるサイトでは、電子書籍で発売した漫画の一覧を観ることができる。 そのサイトを見るのが日課だったのだけど、正直毎日確認するのが...

これでSlack通知させたくて、Rubyでも書いてみた。

require 'dotenv'
require 'slack/incoming/webhooks'

  Dotenv.load
  slack = Slack::Incoming::Webhooks.new ENV["APIKEY"]
  
  attachments = [{
    color: "#483D8B",
    fields: [
      {
      title: "今日の書籍一覧",
      value: "#{str}",
      }
    ],
  }]
  
  slack.post "", attachments: attachments

APIKEYをGithubで管理しないために、dotenvで.envに書いたAPIKEYを読むようにした。
しかし、他の方々はどうしてるのだろう?

ちなみにシェルスクリプトはこれ。

#!/bin/bash

if [ -n $? ];then
  echo "Usage: ./slack.sh IPaddress"
  exit 1;
fi

url='webhookのAPIで取得したURLをここに記載する。'
username='ユーザー名として名乗る名称を記載する。なんでもOK'
to="#チャンネル名を記載する"
subject="`hostname` : $1"
emoji=':bell:'   <-絵文字。なんでもOK
#message="${subject}"
message2="$2"

payload="payload={
     \"channel\": \"${to}\",
     \"username\": \"${username}\",
     \"text\": \"${subject}\",
     \"icon_emoji\": \"${emoji}\",
     \"attachments\": [
     {
       \"text\": \"${message2}\"
     }
     ]
}"

curl -m 5 --data-urlencode "${payload}" $url

今となってはなんでこれを書いたか覚えてないけど、なんとくなく監視用っぽいスクリプトな気がする。
curlでAPIKEYにJSON形式で情報を渡している。

Slackで通知を集約できるのは思った以上に便利だった。
今までとりあえず雑にメールで通知させていたものは、全てSlackで良くなった。
SkypeからSlackへ移行した理由もこの辺が強いと思う。

反面、通知が流れていくと他の人は追いづらくなってしまうのでバランスよく通知させていきたい。

上記通知部分が作成できたので、自宅サーバーのcronにセットすることで、毎日新しい漫画の一覧が取得できるようになった。
便利機能でもなんでもないけど、作ろうと思ってたものができたのは良かった。

次は何書こうかな。