2014-06-14 7 views
0

나는 다음 코드을 가지고 있으며 ARGV를 사용하고 있습니다. 사용자가 null ARGV를 떠났을 때 메시지를 표시하도록 만들 것입니다.이정의되지 않은 메소드`include? ' nilClass (NoMethodError)

tld.rb : 302 :

=begin 

    TLDentifier developed by Arsh Leak. 2014. 
    Commands: 
     --display : Show all TLDs registered. 
     --help  : Show more informations. 
     target.com 

=end 

    class String 
    def green;   "\033[32m#{self}\033[0m" end 
    def blue;   "\033[34m#{self}\033[0m" end 
    def cyan;   "\033[36m#{self}\033[0m" end 
    def bold;   "\033[1m#{self}\033[22m" end 
    end 


    system("clear") 

    domains = { 
    ".br"  => "Brazilian", 
    ".com"  => "Comercial", 
    ".aero"  => "Aircraft", 
    ".biz"  => "Business", 
    ".coop"  => "Cooperative", 
    ".edu"  => "Educational", 
    ".gov"  => "Government", 
    ".info"  => "Information", 
    ".int"  => "International organization", 
    } 

    def head() 
    "TLDentifier".green.bold 
    end 
    puts head() 
    name = ARGV.first 
    puts "[#{name}]".blue.bold 
    domains.each do |domain, etn| 
    if name.include? (domain) 
     puts "["+domain.cyan+"] is a "+etn+" Domain." 
    elsif name == "--help" 
     system("clear") 
     puts head() 
     puts "" 
     puts "Development.".cyan 
     puts "Developed by "+"Arsh Leak. 2014." 
     puts "" 
     puts "" 
     puts "GitHub.".cyan 
     puts "github.com/4rsh" 
     puts "" 
     puts "Facebook.".cyan 
     puts "facebook.com/doxnetwork" 
     puts "" 
     puts "Blog.".cyan 
     puts "doxnetwork.com/" 
     puts "" 
     puts "Credits.".cyan 
     puts "Prof. Eric Weinstein." 
     puts "" 
     puts "How to.".cyan 
     puts "If you want to identify all TLDs, type:" 
     puts "$ ruby ltdentifier.rb --display".green 
     puts "" 
     puts "If you want to identify a specific TLD, type:" 
     puts "$ ruby ltdentifier.rb www.website.com/dir or www.website.com.".green 
     puts "" 
    elsif name == "--display" 
     head() 
     puts "Domain:".green+domain+" -"+" Entity: ".green+etn 
     end 
end 

그리고, 스크립트이 오류를 반환? block in <main>': undefined method에 포함을 ' 무기 호에 대한 : NilClass (NoMethodError) tld.rb에서 : 301 : each' from tld.rb:301:in에 '인수가 전달되지

답변

0

, ARGV.first 반환 nil, include?에 응답하지 않는 따라서 문자열이 아닌합니다. false 같은 nil 행위는, 그래서 당신은 name의 첫 번째 사용하기 전에

unless name 
    puts "Need at least one argument" 
    exit 
end 

과 같은 코드를 넣어이 테스트 할 수 있습니다.

관련 문제