ruby qrcode」でググると Y.Swetake さんの QRコードクラスライブラリ for Ruby - QRcode encode class library for Ruby が真っ先にヒットする。だが、単に php 版から移植したと説明されているのと beta 版ということもあって躊躇っていた。
RubyForge にないのかと探していたところ rqr - http://rqr.rubyforge.org/ が見つかった。
バイナリ出力をするのではなくファイルに書き出すだけの簡単な仕様になっている。また、libjpeg, libpng, libtiff を使用しているので予めインストールしておく必要がある。

yum で依存ライブラリをインストール

# yum install libjpeg.i386
# yum install libpng.i386
# yum install libtiff.i386

rubygems でインストール

# gem install rqr

CGI を作ってみる

パラメータのテキストを QRコード で返す CGI を作成してみる。

#!/usr/bin/env ruby
require “rubygems”
require “rqr”
require “cgi”
#
# QRcode を PNG 形式のバイナリで返す
#
def get_qrcode_bytes(text)
filepath = “/tmp/qrcode” + $$.to_s + “.png”
RQR::QRCode.create do |qr|
qr.save(text, filepath)
end
bytes = File.read(filepath)
File.delete(filepath)
return bytes
end
cgi = CGI.new
text = cgi[“text”]
cgi.out(“image/png”) { get_qrcode_bytes(text) }

非常にお手軽で、ネイティブライブラリを使用しているので実行速度も速くて便利だ。