【发布时间】:2019-12-25 01:15:14
【问题描述】:
我正在尝试加载模块:
#MainApp/app/lib/game/pieces.rb
module Pieces
class Pawn
def initialize
puts "I'm a piece!"
end
end
end
在模型中:
# MainApp/app/models/boardgame.rb
class Boardgame < ApplicationRecord
include Game::Pieces
end
但我得到“无法自动加载常量 Game::Pieces,预期 /home/..MainApp/app/lib/game/pieces.rb 来定义它(LoadError)”
我尝试在 autoload_paths 和 eager_load_paths 中设置文件夹:
# config/application.rb
module MainApp
class Application < Rails::Application
config.load_defaults 5.2
config.autoload_paths << Rails.root.join('app/lib/game')
config.eager_load_paths << Rails.root.join('app/lib/game')
end
end
但它仍然不起作用,如果我将模块放在 app/lib 中,它会完美加载它,问题只出现在子文件夹中。
【问题讨论】:
-
您在
MainApp/app/lib/game/pieces.rb中定义了Pieces::Piece,但试图包含Game::Piece。这没有意义,是吗? -
您缺少命名约定...
-
我意识到了,现在:/ 谢谢
标签: ruby-on-rails ruby module