#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 で起動するため他のマシンから接続できない。~
ネットワーク関係の原因があるかもしれんが。

** 自動起動

手抜き
 (cd /path/to/ror/; su USER -c "script/server -b IP -d")
* スコープ

とりあえず 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),' などに書き換え。

#ls2

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS