イディオム

const_get

クラスやモジュールの名前からクラスやモジュールそのものを取得したい時。 module Foo p const_get('String') end 一見Stringという名前の定数が表示されるだけに見えるけど、 module Foo p const_get('String').new end クラス名というのは実は単なる定数…

日付のパース

Rubyの組み込みライブラリのTimeは日付のフォーマットはできるけどパースはできない。実は結構見落とすことが多いんだけど、添付ライブラリのほうにtimeというのがあって、パースはそっちでできる。 require 'time' t = Time.parse('1999/07/01 06:06:06') r…

Threadとtimeoutと後始末

# 閉じられないファイルの例 Thread.start { f = open('foo', 'w') if false raise x end f.close } さて、このままスクリプトが終了するならいいんだけど、これが何度も繰り返されるとファイルがいつまでたっても閉じられないまま困ることになるかもしれな…

requireとrescue

なんとなく今日からRubyのよく書くパターンを紹介していくことにする。上?から順番にまずはrequire。 begin require 'ファイルがある時だけ読むライブラリとか' rescue LoadError end requireしたいファイルがないとエラーになるのでrescueしますが、rescue…