【发布时间】:2020-01-26 22:43:21
【问题描述】:
我正在构建一个 Rails 引擎,其中包含一些通过 Webpacker 构建的资产,我正在关注 the Webpacker documentation。
我想将此引擎作为 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
如果我将 Rack::Static 的 root: 选项设置为相对路径(例如:my_engine/public),然后在宿主项目中创建指向 gem 中相关目录的符号链接,这将起作用,但是代码上面生成绝对路径的方法不行。
我能做些什么来解决这个问题?
【问题讨论】:
-
你有没有在这方面破土动工?我遇到了一个相关的问题,我有一个
Rack::Static包装器,我将它作为mount Rerackt::UI.new, at: "/rerackt"安装在我的路由中,其中Rerackt::UI将绝对根传递给Rack::Static。如果我将它安装在"/",这实际上是有效的,但是当我将它安装在"/rerackt"时,链接到index.html的资产是,例如/static/...chunk.js当他们需要/rerackt/static/...chunk.js
标签: ruby-on-rails ruby rack rails-engines webpacker