高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

仲間が増えた

今日は磯子クリエイティブチームの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モジュールを握る唯一の変数になります。外部モジュールを名前で呼び出すとなると、うっかりモジュール名が被っちゃったりといったケースが心配ですが、これなら被ることはなさそうです。

検証コードが間違っていました。さすがにそんなことはないようです。