Hatena::Groupmoti

ruby

ruby

ruby

基本

Windows上で動作するRubyコードを書くにあたって,設定しておくべき項目,及び読み込みしておいたほうがよいライブラリを記載.

KCODE

$KCODE='u' #

コード内に記述してあるマルチバイト文字の扱いを指定する.デフォルトでUTF-8として扱う設定.

kconv

require "kconv" 

文字コードエンコーディングを変換するためのモジュールを読み込む..tsjisメソッドなどを利用するために必要.

pp

require "pp"

オブジェクトを展開してprintする.デバッグ用に必要.

テクニック

ヒアドキュメント

hoge= <<EOF
  ほげほげ
EOF

あるオブジェクトのメソッドを調べる

pp hog.methods

win32oleを使って,MS SQL-Server 20005 にアクセスする

事前準備

管理ツールで「ODBC データソース」を作成しておく.

必要なモジュール

require "win32ole"
require "kconv"

kconvはお好みで.コードをsjis以外の文字コードで作った場合は,SQLクエリを最終的にsjisにして実行するために必要.

接続

sampledbObj = WIN32OLE.new "ADODB.Connection"
sampledbObj.Open "Provider=MSDASQL.1;Password=password;User ID=sa;Data Source=sampledb;"

サンプル

接続した後,以下のコードでクエリを実行し,結果をresに格納する.

q= <<EOF
SELECT
  *
FROM
  TABLE
EOF

res = sampledbObj.Execute(q.tosjis)

格納したデータから,必要な部分を抜き出す方法は"pp res.methods"を実行し,該当するメソッドを探す.

make pdf

PDF::Writer を使ってPDFを作成する.

install PDF::Writer

まずは,PDF::Writer をgemでインストールする.

$ sudo gem install pdf-writer

sample

表を出力する.

#!/usr/bin/ruby1.8
require &#39;rubygems&#39;
require &#39;pdf/simpletable&#39;

title = &#39;foo&#39;

pdf = PDF::Writer.new(:orientation => :landscape)
#pdf.select_font(&#39;GothicBBB-Medium&#39;, &#39;UniJIS-UCS2-HW-H&#39;)

PDF::SimpleTable.new do |tab|
  tab.title = title
  tab.header_gap = 200
  tab.show_lines = :all
  tab.bold_headings = true
  tab.heading_color = Color::RGB::Blue

  tab.column_order = %w(cal1 cal2)
  data = []
  data <<
    {
      "cal1"=>&#39;data1&#39;, "cal2"=>"data2"
    }
  tab.data = data
  tab.render_on(pdf)
  fname = "#{title}.pdf"
  pdf.save_as(fname)
end

data に,沢山入れればそれだけ行が増える.

error

mkmf error

ERROR:  Error installing passenger:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install passenger
extconf.rb:1:in `require&#39;: no such file to load -- mkmf (LoadError)
        from extconf.rb:1


Gem files will remain installed in /var/lib/gems/1.8/gems/fastthread-1.0.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/fastthread-1.0.1/ext/fastthread/gem_make.out

mkmfのエラーが出た場合は「ruby-dev」をインストールする。

こんな感じ。

# sudo apt-get install ruby1.8-dev

* はてなダイアリーキーワード:ruby