2009年03月04日(水) [長年日記]
■ [ruby] RubyGemsでインストールしたライブラリをrequireする方法
昨日のスクリプトでは 'rubygems' をrequireするように書いたが、これは正しい作法ではないように思ったので調べた。
- 3.4 Post-install -- Setting Up the RubyGems Environment (RubyGems User Guide)
に、
- rubyコマンドに「-rubygems」オプションを付与して実行する
- 同じことだが、環境変数RUBYOPTに「rubygems」を追加する
とする方法が書かれていた。
■ [ruby] rcairoを使った
るびま0019号で紹介されていた2次元画像描画ライブラリcairoのRubyバインディングであるrcairoを使ってみた。
まだあまりよく分かっていないけれど、昨日と同じ星形を描いてみたのでメモ。ふむ、show_textを呼ぶと点の位置がずれてしまうのか。
#!/usr/bin/ruby require 'cairo' # プロットするデータ triangle1 = [[10, 20], [70, 20], [40, 70]] triangle2 = [[10, 60], [70, 60], [40, 10]] surface = Cairo::ImageSurface.new(200, 180) context = Cairo::Context.new(surface) # 座標系の変換。斜めにずらして2倍の大きさに。 context.translate(10 , 10) context.scale(2, 2) # 赤い線 context.line_width = 2 context.set_source_color(:red) context.stroke { context.move_to(triangle1.last[0], triangle1.last[1]) triangle1.each_with_index {|t, i| context.line_to(t[0], t[1]) context.save { # 番号を出力 context.set_source_color(:black) context.font_size = 10 context.show_text("[#{i}]") } } } # 緑の点線 context.line_width = 1 context.set_dash([5, 2]) context.set_source_color(:green) context.stroke { context.move_to(triangle2.last[0], triangle2.last[1]) triangle2.each {|t| context.line_to(t[0], t[1]) } } surface.write_to_png("star-sample.png")
■ やること
- 請書