Ruby 2.4

ERB::DefMethod

module ERB::DefMethod

实用程序模块将eRuby脚本定义为实例方法。

example.rhtml:

<% for item in @items %> <b><%= item %></b> <% end %>

example.rb:

require 'erb' class MyClass extend ERB::DefMethod def_erb_method('render()', 'example.rhtml') def initialize(items) @items = items end end print MyClass.new([10,20,30]).render()

结果:

<b>10</b> <b>20</b> <b>30</b>

公共类方法

def_erb_method(methodname, erb_or_fname) Show source

定义methodname 作为当前模块的实例方法,所使用的是ERB对象或eRuby文件

# File lib/erb.rb, line 1040 def def_erb_method(methodname, erb_or_fname) if erb_or_fname.kind_of? String fname = erb_or_fname erb = ERB.new(File.read(fname)) erb.def_method(self, methodname, fname) else erb = erb_or_fname erb.def_method(self, methodname, erb.filename || '(ERB)') end end

私有实例方法

def_erb_method(methodname, erb_or_fname) Show source

定义methodname作为当前模块的实例方法,使用的是ERB对象或eRuby文件

# File lib/erb.rb, line 1040 def def_erb_method(methodname, erb_or_fname) if erb_or_fname.kind_of? String fname = erb_or_fname erb = ERB.new(File.read(fname)) erb.def_method(self, methodname, fname) else erb = erb_or_fname erb.def_method(self, methodname, erb.filename || '(ERB)') end end