【问题标题】:Vendored assets in a Rails engine not loading when used as a Gem用作 Gem 时,Rails 引擎中的供应商资产未加载
【发布时间】: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/assetspath/to/mygem/vendor/assets

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多