Glide Note

glidenote's blog

rubocop+syntasticでRubyのコーディングルールへの準拠チェックを自動化する

sensuのプラグイン書いてて、sensu/sensu-community-pluginsを見ていたら rubocopでlintかけろ的な事が書いて、導入して使ってみたら便利だったのでメモ。

rubocopとは

rubocopとは、Rubyのコードがruby-style-guide(日本語訳)に 沿って書かれているか解析してくれるツール

rubocopのインストールと使い方

1
gem install rubocop

でコマンドラインから利用する場合は下記みたいな感じ。

単一ファイルに対して実行する場合

1
rubocop hoge.rb

配下のファイルに一斉に実行する場合

1
2
cd /path/to/ruby-project/
rubocop

bbatsov/ruby-style-guideに準拠してない、 記載方法がある場合は指摘される。 自分で.rubocop.ymlとかを用意することで、自分たち用のコーディングルールに変更も出来る。

既存プロジェクトへの適用

新規に使い始めるときは楽なんですが、既存のプロジェクトやコードにrubocopを走らせると恐らく大量に違反が検出されて それを直していくのは結構ツラい。 なのでとりあえずは下記みたいな感じで現段階での違反をとりあえず無視する。

1
2
3
4
cd /path/to/ruby-project/
rubocop --auto-gen-config
echo 'inherit_from: rubocop-todo.yml' >> .rubocop.yml
rubocop

それで、チェックしたいルールを1個ずつ下記のように.rubocop.ymlに追加

1
2
LineLength:
  Max: 80

再度rubocopを実行すると、追加したルールに違反しているものだけ表示されるので、 少しずつ直していける。

また一部ルールは-aもしくは--auto-correctを利用することで自動的に変換も出来る。

1
rubocop -a

Vimからの利用

Vimから使えると便利そうと思っていたら、syntasticが rubocopをサポートしているので下記のように設定するだけで、簡単に利用出来た。

私はneobundle.vimを使っているので下記のような感じで記載して:NeoBundleInstall

1
2
NeoBundle 'scrooloose/syntastic'
let g:syntastic_ruby_checkers = ['rubocop']

ファイルを保存したタイミングでsyntastic経由でrubocopが実行され、自動でチェックが走ってくれる。 指摘内容は:Errorsとか実行すると確認が出来る。

vimだけじゃなくzshからも利用出来ると便利そうなので、zsh-completionsにPRを出しておいた。

今まで、ruby-style-guide(日本語訳)に沿った書き方を してなかったので、使ってるとイライラさせられる部分もあるけど、矯正されていく感があってなかなか良い。

参考

ゆるふわなかんじで Sensu の話題をするためのIRCチャンネルをつくってみた

Sensuについて、ゆるふわなトークが出来るIRCチャンネルを作ってみた。

#sensu-casual@freenode

まだ誰もいないのでChanServだけ話をしてる。

たまにカレー情報

たまに寿司情報

がこんな感じで流れるのでSensu使ってないけど、 カレー情報や寿司情報を入手したい人も入ってくるといいと思います。

BotBot.meに依頼して、zncとか使って常駐してなくてもログが追えるよう

に記録されるようになっているので、便利な感じになってます。

14:18 追記 BotBot.meのBotさんが即死して帰ってこないので、ログが追えなくなってます… 。そのうち生き返ると思います。

参考

sensu-puppetがよく理解出来るかもしれないsensu-puppet-sampleを作った

前に監視ソフトをNagiosからSensuに切り替えて2ヶ月経ったのでまとめた - Glide Note - グライドノート を書いて、 さらに半年近く経過し、約8ヶ月間Sensuを本番環境で運用しているけど、非常に安定していて監視もちゃんと機能していて1回もsensu自体は止まったことはない。

某誌からSensuについて執筆の依頼が来てたんですが、企画が流れてしまったので、 企画段階で書いたり、作ったりしたものをせっかくなので公開しようと思う。

sensu-puppet-sampleを利用すると下記のような構成が出来上がります。

sensu-puppet-sampleではsensu用のマニフェストは1つのファイルで完結してて、 puppet applyだけで適用出来るようになっているので、

  • puppetを使ってない環境への組み込みが簡単
  • すでにpuppet使っている場合は既存puppet環境との共存が簡単

というふうに作ってあります。

社内の開発サーバの死活監視が必要になったときもこれを使ってサクッと構築。

はじめに

  • 簡単にSensuを試してみたい人を対象としている
  • Sensu導入にはChef/Puppetの利用が推奨されているため、今回はSensu公式のsensu-puppetを利用してSensuを導入するが、Puppetにおける前提知識を必要としない
  • sensu-chefと比較して、sensu-puppetは情報が少なく利用の敷居が高いため、利用方法やマニフェストの記載例として用意
  • Puppetのpuppet applyコマンドだけを利用する(agent/master構成を取らない) ( refs 入門Puppet - Automate Your Infrastructure - 達人出版会)
  • Puppetモジュールを積極的に活用してPuppetマニフェストが簡潔にする
  • CentOS 6.xでの作業を想定してます

sensu-puppet-sampleの利用方法

sensu-puppetに関してのまとめ

sensu/sensu-puppetもsensuを本番投入前から触っていて、 9ヶ月くらい運用しているので、ちょっとまとめてみる。

sensu-puppetを利用するメリット

  • サーバ構築時にpuppetを実行するだけで、構築作業と監視設定が完了して監視もその時点から始まる。
  • sensuの各種設定を、puppetマニフェストを通じて生成、管理出来る。
  • sensu-puppetが、マニフェストからSensuのjson形式の設定ファイル(json形式)を生成してくれるので、Sensuの設定ファイルの記載方法を覚えなくても良い
  • 監視設定を追加、変更する場合はpuppetマニフェストを用意して、puppet applyすれば反映される

sensu-puppetを利用するデメリット

  • sensu-puppet用のマニフェストの書き方をしないといけない
  • ドキュメントがほぼ無いので、変わったことをやろうとするとソースを読まないといけない

sensu-puppetを使ってる人があんまりいないので、参考になれば幸いです。 Sensuが普及してきたら、特集してくれるようになので、流行ってくれるといいな-

参考

zsh-bdで親ディレクトリへの移動を便利にする

autojumpとかzを使ってると ディレクトリの移動は大変便利なんですが、深いディレクトリにいて、ちょっと親ディレクトリに移動したいときには適さない。

vigneshwaranr/bdのzsh版であるzsh-bd を利用するとそこの問題が解決出来る。

導入方法

公式READMEにはantigenとかでの導入方法が書いてあるんですが、 普通にbd.zshを持ってきて、読み込めば利用出来る。

1
2
wget https://raw.githubusercontent.com/Tarrasch/zsh-bd/master/bd.zsh
source bd.zsh

使い方

1
bd [tab]

とかで下記のように動いて、親ディレクトリへの移動が楽になる。

参考

Homebrewで入れたgit,zshを優先的に利用する

ちょっと前に会社のMacを入れ替えて、Homebrewで最新のgitzshなどを導入したのに 最初から入っているシステムのgitzshが優先的に利用されていることに気づいて、 この設定、数年おきにしていて、いつも忘れるのでメモ。(2回ググったらブログに書く)

呼び出されているgitのバージョン確認。(実際にはhub経由でgitを呼び出してました。)

1
2
git --version
git version 1.8.5.2 (Apple Git-48)

本来利用したいHomebrewでインストールしたgitのバージョン

1
2
/usr/local/bin/git --version
git version 1.9.2

下記のように/usr/local/binが一番上になるように/etc/pathsの順番入れ替え。上から優先的に利用されるようになる。

1
2
3
4
5
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

exec $SHELLで設定反映。

1
2
git --version
git version 1.9.2

ちゃんと意図した動作になった。