erb给我 - undefined局部变量或main方法:Object(NameError)

Rad*_*dek 1 ruby erb

undefined local variable or method for main:Object (NameError)除非erb模板中使用的变量是全局变量,否则erb会给我.

那是对的吗?on ruby​​ 1.8.7(2010-01-10 patchlevel 249)[i486-linux]

下面是有效的代码.如果我$从变量名称($ db,$ db_root,$ db_root_password)中删除我得到错误.

$db = get_single_argument("database name")
$db_root = get_single_argument("database root user name")
$db_root_passwd = get_single_argument("database root user password")

mysql_commands = get_conf_file("installer_mysql.erb")

puts mysql_commands.result  #gives me the error
Run Code Online (Sandbox Code Playgroud)

get_conf_file过程

def get_conf_file(file)

 return_array = Array.new
 if (File.exists?(file))
   return_array = ERB.new File.read(file)
 end
 return_array
end
Run Code Online (Sandbox Code Playgroud)

Fre*_*ung 9

Ruby有一个叫做绑定的概念,你可能会认为它是一段代码可能具有的局部变量,self值,块等.您可能还会将绑定视为代码的上下文.

Erb的result方法采用可选的第二种方法,即用于评估您提供的代码的绑定,因此您可以执行类似的操作

x = 1
ERB.new('x=<%= x %>').result(binding) #=> "x=1"
Run Code Online (Sandbox Code Playgroud)