2016-11-07 58 views
1

我得到一個錯誤從零到字符串

ruby/2.1.0/open-uri.rb:36:in `open': no implicit conversion of nil into String (TypeError) 

這裏@filename@directory@xmlFile都沒有隱含converson有String作爲類的類型,如果我打印出來。 但不知何故仍在eval_script上面的錯誤被拋出。我不承認爲什麼?

def execute 
    ... 
    @result = eval_script(@filename,@xmlFile,@directory) 
end 

def eval_script filename,xml,directory 
    proc = Proc.new{} 
    eval(File.read(filename),proc.binding, filename) 
end 

編輯: 1)執行的方法是我的導軌動作控制器的方法。

腳本:

# encoding: UTF-8 
require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::XML(open(ARGV.first)) 
path = ARGV[1] 
print path 
File.delete(path + "/testOut.txt") if File.exist?(path + "/testOut.txt") 
file = File.open(path + "/testOut.txt", 'w') 
doc.css('testcases').each { |node| file.write "#{node['name']}\n" if node.css('results[test="testOut"]').any? } 
+0

我想這個錯誤可能在你正在嘗試評估的文件filename中。你可以驗證'filename'運行正常嗎?你也沒有在方法'eval_script'中使用'xml'參數。 – Rashmirathi

+0

@Rashmirathi:帶路徑的文件名是正確的。我可以通過在運行窗口中打開該文件(我正在使用Windows)2)它通過proc.binding接受輸入,因此我認爲它不需要提及參數。 – InQusitive

+2

問題很可能出現在您要評估的腳本中,而不是您在郵件中發佈的代碼中。 您可以向我們展示@filename – SteveTurczyn

回答

1

嗯,有你的問題。腳本的4號線是

doc = Nokogiri::XML(open(ARGV.first)) 

但也有被傳遞沒有ARGV的元素,所以你試圖打開nil

既然你已經綁定可用,只是指在eval_script定義的變量方法。

doc = Nokogiri::XML(open(xml)) 
+0

剛開始學習Ruby,很多學習,ty。 – InQusitive