gpt4 book ai didi

ruby-on-rails - 如何在 Rails4 引擎中添加 autoload_paths?

转载 作者:行者123 更新时间:2023-12-03 16:06:16 24 4
gpt4 key购买 nike

通常我在 config/application.rb 中添加以下内容来添加 autload_paths:

config.autoload_paths += Dir[Rails.root.join('app', 'poros', '{**}')]

如何在引擎中实现相同的目标?
当我只在宿主应用程序中的 application.rb 中使用相同的代码时,它似乎可以工作,但是我认为代码不在引擎中并且需要添加到宿主应用程序才能使事情正常工作是丑陋的。

我发现通过引擎添加加载路径的唯一解决方案是将其添加到 lib/engine/engine.rb 中:
config.to_prepare do
Dir.glob(Rails.root + "../../app/poros/**/*.rb").each do |c|
require_dependency(c)
end
end

但是,这似乎存在根本性的错误,因为这会在我进行控制台重新加载时导致问题(例如,它告诉我常量已定义或问题无法执行包含块两次)

在引擎本身中执行此操作的正确方法是什么? (不敢相信这如此困难/不常见,我确实在谷歌上搜索了很多,但找不到解决方案)

最佳答案

根据Rails::Engine documentation ,您可以像这样在 Railtie 中添加自动加载路径:

class MyEngine < Rails::Engine
# Add a load path for this specific Engine
config.autoload_paths << File.expand_path("../lib/some/path", __FILE__)

initializer "my_engine.add_middleware" do |app|
app.middleware.use MyEngine::Middleware
end
end

关于ruby-on-rails - 如何在 Rails4 引擎中添加 autoload_paths?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28499923/

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