From: Shinya Kawaji Date: 2003-04-22T11:14:56+09:00 Subject: [ruby-list:37609] ERB::DefMethod.def_erb_method かわじ、です ruby 1.8.0 に添付の ERB::DefMethod.def_erb_method ですが、 第 2引数は ERBのインスタンスか、ERBのソースファイル名を指定できると 理解して良いでしょうか? http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=ERB とすると、ERBインスタンスの方が上手くいっていないように思います。 $ ruby -v ruby 1.8.0 (2003-03-24) [i686-linux-gnu] $ irb --simple-prompt >> require 'erb' => true >> class A >> extend ERB::DefMethod >> def_erb_method('hoge',ERB.new('<%= Time.now %>')) >> end TypeError: cannot convert nil into String from /usr/local/lib/ruby/site_ruby/1.8/erb.rb:240:in `module_eval' from /usr/local/lib/ruby/site_ruby/1.8/erb.rb:240:in `def_method' from /usr/local/lib/ruby/site_ruby/1.8/erb.rb:281:in `def_erb_method' from (irb):4 以下のようにすれば良いかと思いましたが、いかがでしょう? --- erb.rb.dist Tue Apr 22 10:33:12 2003 +++ erb.rb Tue Apr 22 10:34:55 2003 @@ -277,8 +277,10 @@ if erb.kind_of? String fname = erb File.open(fname) {|f| erb = ERB.new(f.read) } + erb.def_method(self, methodname, fname) + else + erb.def_method(self, methodname) end - erb.def_method(self, methodname, fname) end module_function :def_erb_method end