2016-03-05 66 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')'。非常感謝 –