我在铁轨上使用红宝石。下面给出的代码工作。但是我想知道它是否可以写得更好。
# Usage: write 'hello world' to tmp/hello.txt file
# Util.write_to_file('hello world', 'a+', 'tmp', 'hello.txt')
def self.write_to_file(data, mode, *args)
input = args
filename = input.pop
dir = Rails.root.join(*input).cleanpath.to_s
FileUtils.mkdir_p(dir)
file = File.join(dir, filename)
File.open(file, mode) {|f| f.puts(data) }
end
答案 0 :(得分:2)
您多久更换一次模式?如果不经常,我会直接把它放在方法中,并完成其余的工作:
def self.write_to_file(data, *args)
file = Rails.root.join(*args)
FileUtils.mkdir_p(file.dirname)
File.open(file, "a+") { |f| f.puts(data) }
end
答案 1 :(得分:0)
您可以利用现有的API,而不必自己完成所有脏工作,这样可以清理很多事情:
def self.write_to_file(data, mode, *path)
path = File.expand_path(File.join(path.flatten), Rails.root)
FileUtils.mkdir_p(File.dirname(path))
File.open(path, mode) do |fh|
fh.print(data)
end
end
这里有几点需要注意。