我正在编写一个孤立的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 app的Gemfile并直接从路径加载引擎,我就不会遇到这些问题。我可以在浏览器中查看我的引擎而没有任何Sprockets问题。加载控制台并查看Rails.application.config.assets.paths
会同时显示path/to/mygem/app/assets
和path/to/mygem/vendor/assets
。
我不明白。如果将引擎作为打包的gem加载或直接从路径加载,为什么会出现不同的行为?
答案 0 :(得分:2)
回答我自己的问题。学校男孩的错误,与资产管道无关,与添加供应商路径到gemspec配置有关。
s.files = Dir['{app,config,db,lib,vendor}/**/*', 'README.md', 'LICENSE.md']