Ruby 逆引きレシピ レシピ204-212

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

今日はレシピ 204 から 212 までを読みました。

第12章 システム管理 のところです。

レシピ 204 より、god という RubyGems パッケージのツールを使うとデーモンプロセスの起動停止や、起動しているかどうかの監視と自動的な再起動をしてくれます。とはいえ、お仕事で使う場合には耐障害性やエラー通知の仕様などなかなかややこしいので、個人的にはこれを使える機会はあまりないかもしれません。

レシピ 205 より、win32-service で Windows サービスを操作する方法が紹介されています。Windows 環境ではないのでスルー、と言いたいところですがこれは以前使ってみようとしたのでその時の状況をメモ。win32-service から依存している拡張ライブラリを含む RubyGems パッケージ(win32-api だったかな?)があるのですが、これが 1.8 用にコンパイルされたバイナリしか配布されていないので 1.9 ではインストールはできても動作させることができませんでした。

レシピ 206 から 211 は Rake の解説です。Rake は 1.9 では標準添付(最初から RubyGems パッケージがインストールされている)になりより身近になっています。個人的に初見だった機能について書きます。

レシピ 208 より、Rake のタスクに引数を取らせることができるそうです。task メソッドの第2引数に引数名を配列で渡すと、ブロック引数に引数をまとめたもの((Rake::TaskArguments クラスのインスタンス)が渡されます。

desc "sample task with arguments"
task "sample", [:name] do |t, args|
  puts "sample task with name=#{args.name}"
end
$ rake sample name=aaa
(in /Users/nagachika)
sample task with name=aaa

レシピ 210 より、rule メソッドを使って拡張子を元に複数のファイルの変換するルールを一度に記述する方法は Makefile で定番の手法ですが Rakefile での書き方は初めて知りました。

rule ".png" => ".jpg" do |t|
  sh "convert", t.source, t.name
end