あるいは。
Ruby で動的に class を定義したかった。
twitter 上で何人かにそんなんできるよって言われたんだけど、どうにも伝わらなかった部分。
class を生成したいんじゃなくて、class 構文を使わずに class を定義したい。
なんでかというと
Fabricator は Model 相当の class の名前を Symbol で与えて使うから
ゴニョゴニョしてできたものはこれ。
具体的に困ったこと、解決したことは何か
- Object.const_set( NAME, classobj ) で好きなタイミングで class 定義できる
- Klass = な書き方はメソッドの中では不可能
- fabrication の DSL はちょっと注意が必要
例えば open や catch とかって attribute を用意してしまうと困る。
Fabricator( :model ) do
open { ... }
catch { ... }
end
って書き方になるんだけど、これは通常のメソッド呼び出しになるので定義できない。
回避方法あるのかなぁ。あったら嬉しいんだけど。ダミーデータ用のツールのために元の名前に制限があったらちょっと本末転倒だよね。