プラグインで名前空間を分ける
tips_plugin_use_module
RubyのModuleは機能をひとまとめにしておき、いろいろなクラスから呼び出す(あるいは含める)ためのものだが、単純に名前空間を分けるために使うこともできます。先ほどの2つの例(@で始まる変数(インスタンス変数)を使うときは要注意とそのプラグイン限定のプライベートなメソッドを定義したい)を合わせたようなコード例を書いてみます。
#hoge1.rb
module Hoge1
@hoge = 1
def format(v)
"[" + @hoge.to_s + ":" + v + "]"
end
module_function :format
end
def hoge1(str)
Hoge1.format(str)
end
#hoge2.rb
@hoge = 2 #これならこちらの影響を受けない。
def format(v)
"---" + @hoge.to_s + ":" + v + "---"
end
もちろん、この例でもhoge2.rbでmodule Hoge1を上書きすることはできますが、なるべくファイル名と同じModuleを使うようにすれば、かなりの確率で意図していない問題を回避できますし、Module内部では自由に変数名・メソッド名をつけられるのでコード的にもすっきりします。
キーワード:
参照:[@で始まる変数を使うときの注意] [tDiary関係] [そのプラグイン限定のメソッドを定義したい]