2015-07-25 3 views
1

У меня есть файл Word.rbNameError: неинициализированная постоянная игра

class Word 

attr_accessor :word, :letters 

    def initialize (word) 
     #@word = word 
     @letters = word.split('').map{|letter| {:letter => letter, :hidden => true} } 
    end 

end 

и другой файл Game.rb, который будет использовать Word.rb

require_relative ('./Word.rb') 
require 'pry' 

class Game 

attr_accessor :guesses, :guessed_letters, :words, :current_word 

    def initialize (words) 
     @guesses = 0 
     @guessed_letters = [] 
     @words = words 
     @current_word = current_word 
    end 
end 

И я получаю следующее сообщение об ошибке :

NameError: uninitialized constant Game

Когда я пытаюсь создать экземпляр игры, как это:

game = Game.new(['hello', 'sunshine', 'chipmunk', 'twitch']) 

Я просто не уверен, что я делаю неправильно, так как я требую файл Word.rb, который Game.rb понадобится. Все файлы находятся на одном уровне, ничто не находится в подкаталоге. Интересно, что я не получаю эту ошибку, как только я прокомментирую строку require_relative (но, конечно, мне нужен этот файл). Я также пытался не использовать require_relative и просто используя require, а также пару других разновидностей: parens/no parens, расширение файла/расширение файла и т. Д. Как мне правильно потребоваться этот файл? У меня также есть прекрасный и надежный массив слов, сидящих в другом файле, который я бы хотел потребовать, чтобы его использовали и передали в Game.new().

+0

где вы положить игру = Game.new, в каком файле? , причина, по которой я спрашиваю, это то, что я не могу воспроизвести вашу проблему. – Doon

+0

прямо сейчас Я просто запускаю это (все команды) в терминале, так что игра = Game.new() была создана в терминале, а также – HolyMoly

+0

вам нужен Game.rb на сеансе REPL (IRB/PRY)? – Doon

ответ

0

Посмотрите, что я сделал

$ mkdir test 
$ cd test 
$ gedit Word.rb 
# and copied your content and saved 
$ gedit Game.rb 
# and copied you content and saved 
$ irb 

После IRB сеанса бега я следующий

2.1.1 :001 > game = Game.new(['asd']) 
NameError: uninitialized constant Game 
    from (irb):1 
    from /home/shiva/.rvm/rubies/ruby-2.1.1/bin/irb:11:in `<main>' 
2.1.1 :002 > require 'game' 
LoadError: cannot load such file -- game 

2.1.1 :004 > require 'Game.rb' 
LoadError: cannot load such file -- Game.rb 

2.1.1 :005 > require './Game.rb' 
=> true 
2.1.1 :006 > game = Game.new(['shiva', 'bhusal']) 
=> #<Game:0x00000003085428 @guesses=0, @guessed_letters=[], @words=["shiva", "bhusal"], @current_word=nil> 
2.1.1 :007 > 

Попробуйте как этот

+0

спасибо :) Один из других комментаторов, который не опубликовал его решение в качестве ответа, помог мне разобраться. – HolyMoly

Смежные вопросы