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
。據我瞭解,它是空的。紅寶石:檢查對象是無
正則表達式中的一些子模式失敗?所以這是Web服務器的錯誤,有時會產生錯誤的日志字符串?
順便說一句如何寫入紅寶石文件?我無法在窗口下的cmd窗口中正確讀取。
「據我所知,這是零。」 Ruby中沒有'null'這樣的東西。只是'無'。 – 2011-05-26 18:59:33
爲什麼得到零?該功能沒有列出到最後,並且您定義了多個變量... – Amadan 2011-05-26 19:00:07
馬克我知道。 Amadan這不是我的腳本伴侶。 :)據我瞭解正則表達式將子模式匹配投入列出的變量。像PHP中的列表函數,當子模式失敗時,它只是分配零對象嗎? – Somebody 2011-05-26 19:01:10