gpt4 book ai didi

ruby-on-rails - Rails 6 无法在开发中正确自动加载类(zeitwerk 模式)

转载 作者:行者123 更新时间:2023-12-05 07:03:48 26 4
gpt4 key购买 nike

我的理解是,默认情况下,Rails 能够自动加载 app 文件夹中正确命名的类。

我没有遇到这种情况,所以我想看看您是否能找到我的代码中的一个明显问题。

我的文件夹/文件:

app
blueprints
concerns
ingredient_blueprint_concern.rb
liqueur_blueprint.rb
controllers
models
...
#app/blueprints/concerns/ingredient_blueprint_concern.rb

module Concerns
module IngredientBlueprintConcern
extend ActiveSupport::Concern

included do
attributes :name
end
end
end

# app/blueprints/liqueur_blueprint.rb

class LiqueurBlueprint < BaseBlueprint
include ::Concerns::IngredientBlueprintConcern

# ...
end

rails 控制台:

> Concerns
=> NameError (uninitialized constant Concerns
Did you mean? Concurrent):

这似乎与新的 Rails 6 zeitwerk 模式有关。如果我回到经典模式(使用下面的代码),它似乎工作正常:

# application.rb
config.autoloader = :classic

最佳答案

https://github.com/rails/rails/issues/36054

好吧,事实证明 concerns 文件夹实际上在 rails 加载路径中,所以这意味着它们不应该命名空间,就像类是 app/models不在 Models 命名空间中。

他们在 Rails 5 中工作的事实是某种副作用,我不会在这里讨论,但您可以在上面的链接中阅读。

关于ruby-on-rails - Rails 6 无法在开发中正确自动加载类(zeitwerk 模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63123535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com