Ruby: check if object is nil

前端 未结 3 983
轮回少年
轮回少年 2021-02-14 16:07
  def parse( line )
    _, remote_addr, status, request, size, referrer, http_user_agent, http_x_forwarded_for = /^([^\\s]+) - (\\d+) \\\"(.+)\\\" (\\d+) \\\"(.*)\\\" \\         


        
相关标签:
3条回答
  • 2021-02-14 16:27

    To write to a file:

    File.open("file.txt", "w") do |file|
      file.puts "whatever"
    end
    

    As I write in a comment above - you didn't say what is nil. Also, check whether referrer contains what you think it contains. EDIT I see it's request that is nil. Obviously, regexp trouble.

    Use rubular.com to easily test your regexp. Copy a line from your input file into "Your test string", and your regexp into "Your regular expression", and tweak until you get a highlight in "Match result".

    Also, what are "wrong logging strings"? If we're talking Apache, log format is configurable.

    0 讨论(0)
  • 2021-02-14 16:36

    You seem to have a few questions here, so I'll take a stab at what seems to be the main one:

    If you want to see if something is nil, just use .nil? - so in your example, you can just say request.nil?, which returns true if it is nil and false otherwise.

    0 讨论(0)
  • 2021-02-14 16:40

    Ruby 2.3.0 added a safe navigation operator (&.) that checks for nil before calling a method.

    request&.split(' ')
    

    This is more or less semantically equivalent to

    !request.nil? && request.split(' ')
    
    0 讨论(0)
提交回复
热议问题