Я пытаюсь написать игру на Ruby (не Rails), чтобы научить ее лучше.(Это означает, что я хотел бы сделать это правильно, но если я пытаюсь запихнуть что-то, что просто не работает в Ruby, я переключу языки.) У меня возникает проблема с требованием заказа, и яМне интересно, есть ли чистый способ сделать следующее.
Вот моя структура до сих пор:
game
Gemfile
src
models
character.rb
game_object.rb
init.rb
Вместо того, чтобы перечислять каждый файл по отдельности, для init.rb требуются такие файлы:
Dir['./src/**/*.rb'].each do |app|
require app
end
game_object.rb пока что очень прост, но character.rb выглядит так:
module Game
class Character < Game::GameObject
attr_accessor :name
def initialize(name)
@name = name
end
end
end
К сожалению, если я это сделаю, я получу "неинициализированную константу Game:: GameObject (NameError) ", если я явно не требую game_object перед другими файлами.
Мне кажется, у меня есть несколько вариантов здесь:
- Загрузить game_object (и другие суперклассы)в init.rb раньше других.
- Требуется game_object в character.rb, что кажется проблематичным, поскольку в зависимости от того, какой путь я использую, я понимаю, что он может загружать файл несколько раз.
- Загрузитькаждый файл в отдельностии управлять заказом полностью вручную, чтобы у меня был полный контроль.
Все это кажется более сложным, чем должно быть.Есть ли более чистый способ?