我写了一个刽子手游戏的实现。 (它在终端上播放)。游戏工作正常,但我通常会遇到一些问题,让我的程序打开一个字典txt文件,从那里生成单词。下面是我生成单词
的代码def word_generator(min, max)
words = File.open("../dictionary.txt"), "r").readlines.map!(&:chomp)
level_words = words.select { |i| i.length >= min && i.length <= max }
random_index = rand(level_words.length)
@game_word = level_words[random_index]
end
当我在本地玩游戏时,这种方法工作正常,而字典文本文件只是远离我的ruby文件的一个目录级别。这是问题所在:
当我将项目打包为gem时,安装它。它会抛出此错误in initialize': No such file or directory @ rb_sysopen /Users/andeladev/Desktop/paitin_hangman/bin/dictionary.txt (Errno::ENOENT)
。当我将文本文件放在终端的当前工作目录中时,它才会正常运行。
如何在传递给File.open
的参数中编写路径,该路径将告诉程序在gem路径而不是当前工作目录中查找文件。
答案 0 :(得分:0)
试试这个:
file_name = File.join(File.dirname(File.expand_path(__FILE__)), '../dictionary.txt')
words = File.open(file_name, "r").readlines.map!(&:chomp)