Ruby:检查对象是否为零

标签 ruby

  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如果是nilfalse否则。

关于Ruby:检查对象是否为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143652/

相关文章:

ruby-on-rails - 在 Rails 中,我可以检查上传的 zip 文件是否损坏或无效吗?

ruby - 如何将哈希数组转换为哈希值数组?

ruby-on-rails - 如何在 Rails 中设置点赞按钮

ruby-on-rails - 警告 : Nokogiri was built against LibXML version 2. 8.0,但已动态加载 2.7.8

ruby - "class A; class B"和 "class A::B"之间的区别

javascript - 使用 mechanize 和 ruby​​ 单击 javascript 选项卡

ruby-on-rails - 验证 Facebook + Twitter + Instagram 的访问 token

ruby-on-rails - 使用 ActiveSupport::Concern 使 ClassMethods 也可用作模块函数

ruby - Ruby Sequel 模块中的交易 : how to get DB object?

ruby - 如何在 Ruby 扩展别名中发出 YAML