首页 > 解决方案 > 使用 Rack::Static 在项目目录之外挂载一个目录

问题描述

我正在构建一个 Rails 引擎,其中包含一些通过 Webpacker 构建的资产,并且我正在关注Webpacker 文档

我想将此引擎作为 gem 分发,并通过Rack::Static主机应用程序中的中间件直接从引擎的 gem 提供引擎的资产。

这就是我正在尝试的:

# in the engine project: lib/my_engine/engine.rb
module MyEngine
  class Engine < ::Rails::Engine
    (...)
    config.app_middleware.use(
      Rack::Static,
      urls: ['/myengine'], root: File.join(__dir__, 'public')
    )
  end
end

如果我将root:选项设置为Rack::Static相对路径(例如my_engine/public:),然后在宿主项目中创建指向 gem 中相关目录的符号链接,这将起作用,但是上面生成绝对路径的代码不起作用。

我能做些什么来解决这个问题?

标签: ruby-on-railsrubyrackrails-engineswebpacker

解决方案


根:MyEngine::Engine.root.join("public")


推荐阅读