#contents * ri で全てのメソッドの説明を表示する 標準だとクラスについて引いたときに、メソッドの一覧しか出ないので、~ 全部表示されるように修正したパッチを書いてみた。~ &ref(ri_display_methods_with_class.patch); Debian ri1.8 1.8.5-2 用(他では知らない。 * perl2ruby ** use lib $LOAD_PATH << File.dirname(__FILE__) + '/foo' ** $a =~ /b/ # 逆でも可 # こっちの方がRuby的? /b/ =~ $a ** 正規表現の文字列先頭/末尾 - 先頭 \A - 末尾 \z \Z は文字列末尾が改行の時、改行の前 * irb と例外 irb で開けないファイルをopenしても何もいわれないのな? * STDOUT.reopenの謎 begin stdout = STDOUT.clone STDOUT.reopen('cannot_write_file', 'w') ensure STDOUT.reopen(stdout) end みたいなことがしたいのだが、ファイルを開くのに失敗している場合、~ ensure の reopen で下記のエラーになる(Debian ruby 1.8.5-3) Bad file descriptor (Errno::EBADF) reopen の時に一旦ファイルを開くと問題なく動く。~ 納得いかねー。 STDOUT.reopen( File.open('/tmp/not_writable', 'w') ) * 挙動謎 - Net::HTTPResponse#read_body -- 違う結果に対して実行しても 2回目だといって怒られる - Net::HTTP#post_form -- エンコード周りが謎なのかなんなのかよく分からん 大人しく start からやっとけと * Ruby on Rails ** Lost connection Mysql::Error: Lost connection to MySQL server during query: SHOW FIELDS FROM XXXs mysqlのモジュールが存在しない場合、scaffold な XXX にアクセスして上記メッセージが発生する。 ** pluralize クラス名(単数)⇔ テーブル名(複数)の変換 ** table, column の名前 自動で解決してくれる分、いろいろハマりがある - table名は複数形名詞(不規則変化も適切に) - FOREIGN KEY で id を指しているものは 単数名詞_id -- 同一テーブルのキーを指すもの複数があっても _id はつけておく(belongs_to による関連づけがうまく動かない ** WEBrick とポート ./script/server -b 192.168.1.100 などとして起動してやらないと 127.0.0.1 で起動するため他のマシンから接続できない。~ ネットワーク関係の原因があるかもしれんが。 * スコープ とりあえず 1.8 の話 - 作る -- loop -- イテレータ(eachなど) - 作らない -- 制御構造(if, while, forなど) { } によるスコープ作成に相当するものは Ruby にはなさげ。~ こういうことをして誤魔化せってことか・・・?~ loop { local_var = "this is local" break } ちなみに loop はメソッドらしい。 * Array to Hash hash = Hash[ *[1,2,3,4].map{|v| [v,true]}.flatten ] * Rgplot [[Rgplot>http://rgplot.rubyforge.org/]] gnuplot の制御を ruby で ** DataSet 以外の入力 Gnuplot::Plot.new の第2引数が 'plot' なので、'plot sin(x),' などに書き換え。