首页 文章

Rails引擎中的供应资产在用作Gem时不会加载

提问于
浏览
1

我正在编写一个孤立的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 .

这是它变得奇怪的地方 . 如果我更改了应用程序's Gemfile and load the engine directly from a path, I don' t有这些问题 . 我可以在浏览器中查看我的引擎而没有任何Sprockets问题 . 加载控制台并查看 Rails.application.config.assets.paths 会显示 path/to/mygem/app/assetspath/to/mygem/vendor/assets .

我不懂 . 如果将引擎作为打包的gem加载或直接从路径加载,为什么会出现不同的行为?

1 回答

  • 2

    回答我自己的问题 . 学校男孩的错误,与资产管道无关,与添加供应商路径到gemspec配置有关 .

    s.files = Dir['{app,config,db,lib,vendor}/**/*', 'README.md', 'LICENSE.md']
    

相关问题