2016-11-12 67 views
0

我有麻煩或感到困惑與rspec的錯誤運行時:認爲rspec的問題與gets.chomp呼叫

rspec -fd game_spec 

respec error messaage

(以上僅是一個長eror的開始消息)

當我運行它沒有-FD,它的工作原理......但它看起來愚蠢......有些事情是錯誤的。當我使用gets.chomp時,我開始收到錯誤信息,但是我看過使用它的類似示例。 'the_word'是否必須在初始化時設置? gets.chomp還是可以的?我感謝任何幫助。以下是遊戲文件及其rspec。我根本不想改變太多。我只想得到我迄今爲止的工作,並繼續努力。謝謝!

user interface with issue rspec file

+0

順便說一下,這是preferrable一個代碼塊添加到這個問題,而不是使用屏幕截圖 –

回答

2

的原因是,從getsARGV(參數變量)讀取,如-fd標誌你給到rpsec

你可以很容易地重新創建這樣的情況:

> ruby -e "puts gets.chomp" ASD 
-e:1:in `gets': No such file or directory @ rb_sysopen - ASD (Errno::ENOENT) 
    from -e:1:in `gets' 
    from -e:1:in `<main>' 

可以防止這種通過清除ARGV發生調用gets.

> ruby -e "ARGV.clear; puts gets.chomp" ASD 
asd # <-- I then type this 
asd # <-- and this is printed 

之前,你不能只是說ARGV = [],因爲它是一個常數,但調用clear是好的,因爲它不重新定義變量。

總之,只要把這個地方gets.chomp前:

ARGV.clear 

下面是關於該主題的另一個問題:Ruby readline fails if process started with arguments

+0

非常感謝。那麼你究竟把它放在哪裏呢?喜歡這個? '代碼'提出「請戰略性地爲我提供一個詞,一個球員。」 game.the_word = ARGV.clear gets.chomp.split('')'code' –

+0

把它放在它自己的行上,在'game.the_word'賦值和'gets.chomp'調用之前。如果你的代碼中沒有使用「ARGV」(你似乎不是),那麼你可以把它放在文件的頂部。 –

+0

明白了!真棒。非常感謝ARGV.clear; gets.chomp.split('') –