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

时间:2014-12-04 19:42:12

标签: ruby-on-rails ruby asset-pipeline rails-engines

我正在编写一个孤立的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/assetspath/to/mygem/vendor/assets

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

1 个答案:

答案 0 :(得分:2)

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

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