2016-03-05 68 views
0

我写了一个hangman游戏的实现。 (它在终端上播放)。游戏工作正常,但我通常有一些问题,让我的程序打开一个字典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文件只是一个目录级别的路程。这里是问题: 当我把项目打包成一个宝石,并安装它。它会抛出这个错误in initialize': No such file or directory @ rb_sysopen /Users/andeladev/Desktop/paitin_hangman/bin/dictionary.txt (Errno::ENOENT)。当我将文本文件放入终端的当前工作目录时,它只能正常运行。

如何在传递给File.open的参数中编写路径,它将告诉程序在gem路径而不是当前工作目录中查找文件。

回答

0

试试这个:

file_name = File.join(File.dirname(File.expand_path(__FILE__)), '../dictionary.txt') 
words = File.open(file_name, "r").readlines.map!(&:chomp) 
+1

我试过的代码,它仍然没有看到字典文件,但它给了我一个线索在哪里得到它,所以我增加了一个''../就是这样。我使用的代码是'file_name = File.join(File.dirname(File.expand_path(__ FILE__)),'../../ dictionary.txt')'。非常感谢 –