我遇到了一个问题,我把头撞到了墙上。基本上,我正在使用此日志记录设置来记录文件,并且效果很好!但是,我想在我构建的方法中使用它..它不会让我!它说它不是一个定义的变量。我猜这是变量范围的问题。我怎样才能解决这个问题?
这是我的日志记录设置:
class MultiDelegator
def initialize(*targets)
@targets = targets
end
def self.delegate(*methods)
methods.each do |m|
define_method(m) do |*args|
@targets.map { |t| t.send(m, *args) }
end
end
self
end
class <<self
alias to new
end
end
log_file = File.open("/opt/sysnovo/log/server.log", "a")
log = Logger.new MultiDelegator.delegate(:write, :close).to(STDOUT, log_file
这是我的方法(删除文件):
def cleanup
log.info "Running cleanup"
dirs = [ "/opt/sysnovo/tmp", "/opt/sysnovo/data", "/opt/sysnovo/merge" ]
dirs.each do |dir|
# Our file count.
file_count = Dir.glob(File.join("#{dir}", '**', '*')).select { |file| File.file?(file) }.count
# Log and delete!
log.info "Removing #{file_count} files in #{dir}"
FileUtils.rm_rf("#{dir}/.", secure: true)
end
end
所以基本上,方法内部的 log.info 失败了:
./sysnovo_server.rb:58:in `<main>': undefined local variable or method `log' for main:Object (NameError)
所以我的问题是这样的:我该如何设置它才能正常工作?或者让 log.info 在我的方法中工作。或者..我做错了吗?我是Ruby的新手,所以要温柔。