RubyのERB APIを使用する場合、文字列はERB.new
になります。そのため、ERBがそのファイルの場所を知る方法は実際にはありません。今、あなたはmy_template.erb
で__FILE__
を使用することができ、それは、ファイルの名前を参照します
t = ERB.new(File.read('my_template.erb')
t.filename = 'my_template.erb'
:あなたはしかし、それはfilename
属性を使用してから来たファイルオブジェクトを伝えることができます。 (これはerb
実行可能ファイルの内容なので、コマンドラインから実行するERBファイルでは__FILE__
が動作します)。
このビットビットより有用にするために、あなたはファイルから読み取られ、filename
を設定するための新しい方法とモンキーパッチERBできます
require 'erb'
class ERB
# these args are the args for ERB.new, which we pass through
# after reading the file into a string
def self.from_file(file, safe_level=nil, trim_mode=nil, eoutvar='_erbout')
t = new(File.read(file), safe_level, trim_mode, eoutvar)
t.filename = file
t
end
end
あなたは今、ERBファイルを読み込むために、このメソッドを使用することができます、および__FILE__
その中で作業し、実際のファイルだけでなく、(erb)
を参照してください:
t = ERB.from_file 'my_template.erb'
puts t.result
私はerubisあまりに – 2rs2ts
NVMでこれを行う方法を知ってみたい、それがerubisと同じです。 '.filename = 'my_template.erb''を設定するだけです – 2rs2ts