Rubyメモ

一般

  • irbでインタラクティブモード。
  • 型変換はhoge.to_s,hoge.to_iとか。
  • イテレータ

10.times do |i| puts i end

とか。これはすごいな。

  • フィルタ

while gets() puts $_ end

とか。ファイル相手だと、

fp=open(filename) fp.each do |line| puts line end fp.close

とか。

  • 置換

object.gsub!(/src/,"target")

とか。gsubだと非破壊。

  • カレントディレクトリ内のファイルを全部表示

Dir.foreach("./") do |dir| puts dir end

とか。

  • キー入力

hoge=STDIN.gets.chop

Hash

a[:hoge]="hogeword" a={:hoge=>"hogeword"}

zlib

require 'zlib'
fp=Zlib::GzipReader.open(FILENAME)
fp.read
fp.close

fp=Zlib::GzipWriter.open(FILENAME)
fp.puts "hogehoge"
fp.close

ライブラリとか

  • httpをゲット

net:httpはちょっと使いにくい。Webagentあたりがいいかも。

require 'webagent'
agent=WebAgent.new()
agent.get('http://kitchon.ddo.jp',nil,nil)
puts agent.body
  • Exerbの仕方。

ruby -r exerb/mkrbc foo.rb

として、レシピファイルを生成。 しかるのちに、Exerb のインターフェースでレシピファイルを指定。 exerb-winを Program Filesにおいちゃだめ。

  • Apolloで書いたスクリプトをExerbするには、

kcode sjis script foo.1.rb foo.1.rb script rbconfig.rb c:\ruby\lib\ruby\1.6\i586-mswin32\rbconfig.rb script win32.rb win32.rb library phi.so phi.so

みたいなレシピファイルが必要。DOS窓開いちゃうのがちょっと気持ち悪いけど、これでWindows上でGUIまで含めた ものをさくっと作って配布できる。でも、VCLのdllも配布しないといけないのかな?

拡張モジュール

こちらがわかりやすい。 ただしActiveScriptRubyの場合はライブラリをインストールしてextconf.rbを以下のように直すと良いかも。

require "mkmf"

$topdir="c:/progra~1/ruby-1.8/lib/ruby/1.8/i386-mswin32"
$ruby="c:/progra~1/ruby-1.8/bin/ruby"
CONFIG["prefix"]="C:/progra~1/ruby-1.8"

create_makefile("CClass")

その他

  • Emacs設定なんだ。パッケージに入ってるのか。