[英]rspec issue believed to be with gets.chomp call
我在運行時遇到問題或對 rspec 錯誤感到困惑:
rspec -fd game_spec
(以上只是長錯誤信息的開始)
當我在沒有 -fd 的情況下運行它時,它可以工作……但它看起來很傻……出了點問題。 當我使用gets.chomp 時,我開始收到錯誤消息,但我查看了使用它的類似示例。 'the_word' 必須在初始化中設置嗎? 是gets.chomp還是可以? 我很感激任何幫助。 以下是到目前為止的游戲文件及其 rspec。 我根本不想改變太多。 我只想得到我目前所做的工作並繼續努力。 謝謝!
原因是從ARGV
(參數變量)讀取,例如您提供給gets
的-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>'
您可以通過在調用gets.
之前清除ARGV
來防止這種情況發生。
> 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 failed if process started with arguments
我使用$stdin.gets.chomp
,所以代碼將是:
game.the_word = $stdin.gets.chomp
根據我的研究, gets.chomp
將首先檢查 ARGV 中的內容,如果找不到,它會使用標准輸入。 這樣做會直接讀取用戶輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.