- 追加された行はこの色です。
- 削除された行はこの色です。
- Ruby へ行く。
#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