capistranoでjekyllのデプロイ

このblogはjekyllを使って作っているんだけど、今までは手元でビルドしてからサーバへrsync使ってアップロードしてました。 rake rsync とやると、アップロードできるようにしてた。 この数日風邪で寝込んでいて暇だったので、勉強を兼ねてデプロイにcapistranoを使うようにしました。 capistranoというのはいわゆるデプロイツールと言われるやつで、デプロイの作業を自動化するためのツールです。 rubyだとcapistranoを使うのが普通らしい。capistranoが設定をrubyで書けるというだけで、扱うファイルの言語はなんでもよいです。以前はシェルスクリプト書いてやっていたようなことを、capistranoの設定を書くことで実現できます。 今capistranoはver.3 になっているので、入門 Capistrano 3 ~ 全ての手作業を生まれる前に消し去りたい | GREE Engineers' Blog を参考にしました。公式のドキュメントも少し読みました。 アップロードするだけだとrsyncでやっていたことと変わらないので、アップロードする前にjekyllのビルドが自動的に走るようにしたり、tar.gzで固めてアップロードするようにしたり、アップロード後のトップページをnokogiriでパースしてちゃんと新しい記事が反映されているか見えるようにしたりしています。 config/deploy.rbは次のような感じ。 ドキュメントをちゃんと読めていないので、この書き方が正しいのかわかってないですが、一応ちゃんと動いてます。 本来はcapistranoのデフォルトタスクに合わせるべきだと思うのですが、裏で何が動くのかまだよくわからないのが嫌で、全部clearして自分で書いてます。設定さえ直せば、checkのところ以外は他のjekyllでも使えると思う。 # config valid only for Capistrano 3.1…

rubyでstormが書ける、Redstormを試す

Redstormを使うと、stormの処理をrubyで書くことができます。 Redstormの詳しいことはProjectのページを読んでみてください。 colinsurprenant/redstorm stormはJavaで処理を書くことができますが、Redstormを使うとrubyでtopologyやboltを書くことができます。 準備 redstorm-0.5.0はstorm-0.7.1まで対応しているということなので、storm-0.7.1を入れて使えるようpathを通しておきます。 クラスタ環境で動かす場合の、stormのセットアップは以下を参照してください。 stormのcluster環境のセットアップ(centos) | tjun memo stormのcluster環境のセットアップ& storm UIを試す (後編1: 1台で全て動かす) | tjun memo 今回のようにとりあえずlocalで動かす場合はJavaとStormにPathが通っていればいいと思います。 $ wget https://github.com/downloads/nathanmarz/storm/storm-0.7.1.zip --no-check-certificate $ unzip storm-0.7.1.zip $ sudo cp…

fluentd-plugin-kestrelを更新しました

kestrelへoutputするプラグインを以前作りました。 fluentd-plugin-kestrelを作ってみた | tjun memo 最近の記事やイベントでまたfluentdが盛り上がっているようなので、久しぶりにプラグインの更新をしました。 tjun/fluent-plugin-kestrel 以前はkestrelへのoutputだけのpluginでしたが、kestrelからの入力をできるようなinput pluginを追加しました。 また、kestrelへの書き込む文字列にprefixやsuffixが付いちゃうというライブラリ依存の問題は回避できることが分かったので、そこも修正しました。 outputのデータのformatを柔軟にしたかったので、tagomoris/fluent-plugin-file-alternativeを参考にさせていただいて、formatのoptionをいくつか追加しました。 これでやりたかったことは一応実装が終わりました。 inputの実装がよくないみたいでinputのテストでshutdownを呼べないため、inputの方はちゃんとテストできてません。 gemの作り方などいろいろ忘れていたのでメモ。 参考にしたのは、 fluentdのためのプラグインをイチから書く手順(bundler版) - tagomorisのメモ置き場 jeweler でらくらく rubygems 作成(github編) - @sugamasao.blog.title # => ”コードで世界を変えたい” updateの流れは、 テストとコードを書いたら、 rake test でテスト。rake install でローカルに開発中のものをgemとしてインストールして試すこともできる。 ドキュメントを修正したら、 rake version:…

fluentd-plugin-kestrelを作ってみた

先週末くらいにTLにたくさん流れてきた"fluentd"について調べてみたらよさそうだったので、勉強を兼ねてpluginを書いてみました。 tjun/fluent-plugin-kestrel - GitHub fluentdっていうのは、ログを収集するツールで、プラグインでいろいろ柔軟に設定できて、複数のサーバのいろんなイベントのログを集めて使いやすい形にする、というような使い方ができるみたいです。 Scribeのようなもの。 fluentdについてもっと知りたい人に参考になるのは以下のサイトです。 fluent/fluentd - GitHub イベントログ収集ツール fluent リリース! - 古橋貞之の日記 最近ちょっと触っていたKestrelというメッセージキューへログを投げられたら便利かな、ということで、fluentdで集めたログをkestrelにenqueueするpluginを作ってみました。 実装は、既にあるいろいろなプラグインを参考にしました。Gemを作るのも初めてでよく分かんなかったけど、fluentdのためのプラグインをイチから書く手順 - tagomorisのメモ置き場 や jeweler でらくらく rubygems 作成(github編)- @sugamasao.blog.title # => ”コードで世界を変えたい”の通りにやっていたらできました。 jewelerって便利。 ちゃんとrubygemsに登録されているので、そのうち…

gem install memcached ではまったメモ

Error: $gem install memcached ... rlibmemcached_wrap.c: In function ‘_wrap_MemcachedSt_sasl_callbacks_set’: rlibmemcached_wrap.c:6669: error: ‘sasl_callback_t’ undeclared (first use in this function) rlibmemcached_wrap.c:6669: error: (Each undeclared identifier is reported only once rlibmemcached_wrap.c:6669: error: for…