在File.write中使用变量

时间:2015-01-10 13:46:24

标签: ruby variables

我一直在使用以下内容将某些内容附加到文件中。

File.write(file, 'something', mode: 'a')  # In case of plain text
File.write(file, myvar, mode: 'a')        # In case of variables

我有以下三个要求。

  1. 使用纯文本和变量

    File.write(file, mytext1=var1, mode: 'a') 
    
  2. 使用纯文本和变量的组合

    File.write(file, mytext1=var1, mytext2=var2, mode: 'a')
    
  3. 同时使用多个变量

    File.write(file, var1, var2, var3, mode: 'a')
    
  4. 这些代码不起作用。

    在上面3点中,mytext1和mytext2是纯文本,可以是DNS1和DNS2。 var1,var2和var3是变量,比如192.168.1.10,192.168.1.11和192.168.1.12。

    我可以通过删除行,添加一个字符串,并用gsub替换字符串来实现这一点(其中变量有效),但我想知道是否有更短的方法来使用{{1 }}

2 个答案:

答案 0 :(得分:2)

您可以使用IO#puts作为

File.open(file_path, 'a') do |file|
  file.puts [var1, "your text", var2] # or puts var1, "your text", var2
end

#puts的文档是:

  

将给定对象写入ios,与IO#prin t一样。在任何尚未以换行符序列结束的记录分隔符之后写入记录分隔符(通常是换行符)。 如果使用数组参数调用,则将每个元素写入新行。如果不带参数调用,则输出单个记录分隔符。

或者,您可以使用File::write

content = [var1, var2, var3].join("\n")
File.write(file, content, mode: 'a')
content = ["mytext1=#{var1}", "mytext2=#{var2}"].join("\n")
File.write(file, content, mode: 'a')

答案 1 :(得分:0)

在Arup Rakshit的帮助下,我找到了两个简单的解决方案。

# using puts
File.open(file, 'a') do |j|
  j.puts "DNS1=\"#{ip}\""; 
end

# Using File.write
content = ("#{var1}\t#{var2}\t#{var3}\n")
File.write(file, content, mode: 'a')