【发布时间】:2023-03-15 21:50:01
【问题描述】:
我正在编写一个独立的 Rails 引擎,它在 app/assets 中有自己的 javascript,这反过来会加载一堆保存在引擎的 vendor/assets 中的依赖项。
我一直在使用测试文件夹中的虚拟应用程序进行开发,一切都按我的预期工作。
如果我将引擎打包为 gem 并将其安装到单独的 rails 应用程序中,当我尝试在浏览器中访问引擎时,我会收到 Sprockets::FileNotFound 异常 couldn't find file。
如果我启动控制台并查看Rails.application.config.assets.paths,它包括mygem/app/assets,但不包括mygem/vendor/assets。
这就是奇怪的地方。如果我更改 rails 应用程序的 Gemfile 并直接从路径加载引擎,我就不会有这些问题。我可以在浏览器中查看我的引擎,而不会出现任何 Sprockets 问题。加载控制台并查看Rails.application.config.assets.paths 显示path/to/mygem/app/assets 和path/to/mygem/vendor/assets。
我不明白。如果将引擎作为打包的 gem 加载或直接从路径加载,为什么我会得到不同的行为?
【问题讨论】:
标签: ruby-on-rails ruby asset-pipeline rails-engines