Ruby 复制替换了变量的文件
我有一个包含替换变量(Ruby 复制替换了变量的文件,ruby,Ruby,我有一个包含替换变量({…})的文件,我想将它复制到另一个文件中,用变量的值替换变量 这是我的 file = File.open(@batch_file_name, "w+") script=File.open("/runBatch.script","r") script.each do |line| file.puts(line) end 但这显然不是正确的方法。有什么建议吗?用ERB文件代替文件中的{…}。用ERB文件代替文件中的{…}。不,这不是正确的方法。你不能指望Ruby神奇地将
{…}
)的文件,我想将它复制到另一个文件中,用变量的值替换变量
这是我的
file = File.open(@batch_file_name, "w+")
script=File.open("/runBatch.script","r")
script.each do |line|
file.puts(line)
end
但这显然不是正确的方法。有什么建议吗?用ERB文件代替文件中的
{…}
。用ERB文件代替文件中的{…}
。不,这不是正确的方法。你不能指望Ruby神奇地将它在数据中遇到的任何{}
解释为变量插值。这将(在其他可怕的副作用中)在世界各地产生巨大的安全问题
如果要将数据插入到字符串中,则需要eval
it,这有其自身的安全风险:
str = 'The value of x is #{x}'
puts str # The value of x is #{x}
x = "123"
puts eval "\"#{str}\"" # Thje value of x is 123
不清楚您试图将哪些变量插入到数据中。无论你做什么,这几乎肯定是错误的做法。不,这不是正确的做法。你不能指望Ruby神奇地将它在数据中遇到的任何
{}
解释为变量插值。这将(在其他可怕的副作用中)在世界各地产生巨大的安全问题
如果要将数据插入到字符串中,则需要eval
it,这有其自身的安全风险:
str = 'The value of x is #{x}'
puts str # The value of x is #{x}
x = "123"
puts eval "\"#{str}\"" # Thje value of x is 123
不清楚您试图将哪些变量插入到数据中。这几乎肯定是做任何事情的错误方式。好的,假设您有一个名为tmp.file的文件,其中包含以下文本:
This is #{foobar}!
然后,您可以轻松地执行以下操作:
str = ""
File.open("tmp.file", "r") do |f|
str = f.read
end
abc = "Sparta"
puts eval('"' + str + '"')
你的结果是这是斯巴达代码>
但正如已经建议的那样,您应该使用像ERB这样的真正的模板解决方案。然后您可以像Rails中的视图一样使用您的文件。这不是这是{foobar}。
您将拥有这是。
好,假设您有一个名为tmp.file的文件,该文件包含以下文本:
This is #{foobar}!
然后,您可以轻松地执行以下操作:
str = ""
File.open("tmp.file", "r") do |f|
str = f.read
end
abc = "Sparta"
puts eval('"' + str + '"')
你的结果是这是斯巴达代码>
但正如已经建议的那样,您应该使用像ERB这样的真正的模板解决方案。然后您可以像Rails中的视图一样使用您的文件。这不是这是{foobar}。
你应该有这是。
我认为这比用{}
评估每一行更好。我认为这比用{}
评估每一行更好。