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}。
你应该有
这是。

我认为这比用
{}
评估每一行更好。我认为这比用
{}
评估每一行更好。