def parse( line )
_, remote_addr, status, request, size, referrer, http_user_agent, http_x_forwarded_for = /^([^\s]+) - (\d+) \"(.+)\" (\d+) \"(.*)\" \"([^\"]*)\" \"(.*)\"/.match(line).to_a
print line
print request
if request && request != nil
_, referrer_host, referrer_url = /^http[s]?:\/\/([^\/]+)(\/.*)/.match(referrer).to_a if referrer
method, full_url, _ = request.split(' ')
in parse: private method 'split' called for nil:NilClass (NoMethodError)
据我所知,它不是在字符串上调用 split
,而是在 nil
上调用。
这部分是解析 web 服务器日志。但我不明白为什么它会变成 nil
。据我了解,它为空。
正则表达式中的一些子模式失败了?所以这是网络服务器的错,它有时会生成错误的日志记录字符串?
顺便说一句,我如何用 ruby 写入文件? windows下这个cmd窗口无法正常读取。
最佳答案
您在这里似乎有几个问题,所以我会尝试一下似乎是主要问题:
如果你想查看是否为 nil,只需使用 .nil?
- 所以在你的例子中,你可以说 request.nil?
,返回 true
如果是nil
和 false
否则。
关于Ruby:检查对象是否为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143652/