今日は磯子クリエイティブチームの11回目の定例会。今回新しい人も来てくれた。わたしとかなづきさんはかねてから面識があったので、これが初めてのメンバーの加入 と言うことになります。
やっと少し動き出せたようでわたしもうれしいですが、そのぶん、そのときそのときで何をすべきか、何を公表すべきか考える必要も出てきたわけで。チームというものの難しさ、コミュニティの難しさも徐々に分かってくるのかな と思っています。
わたしもリーダーとして、成長していかないと。それから出来ることなら、そのノウハウを他のクリエイティブチームが出来るときのためにためていかないと。まだまだ磯子クリエイティブチームの旅は続きます。
Rubyで外部モジュールの読み出し
さて、裏側では磯クリの作業効率化と言うことでRubyのモジュールの作成中。今回は外部のモジュールを読み込む処理をやっています。
外部のモジュールを読み出す場合、モジュールを名前で指定する形になります。
そのあと文字列をModuleオブジェクト、Classオブジェクトに変換するにはObject#instance_evalメソッドを使用します。
mod = instance_eval(modname)
ファイル名がcode.rb、モジュール名がCodeだとすると、以下のような感じです。
name = "code.rb" require name modname = File.basename(name, ".*").capitalize mod = instance_eval(modname)
それから、こうやれば、ブロックを出たときにcode.rbはrequireされてない状態になるので・・・
name = "code.rb" mod = nil instance_eval do require name modname = File.basename(name, ".*").capitalize mod = instance_eval(modname) end
mod変数がTestモジュールを握る唯一の変数になります。外部モジュールを名前で呼び出すとなると、うっかりモジュール名が被っちゃったりといったケースが心配ですが、これなら被ることはなさそうです。
検証コードが間違っていました。さすがにそんなことはないようです。