首页 > 解决方案 > Sprocket 的要求如何工作?

问题描述

我在 app/assets/javascripts 下有一个名为 application.js 的文件

// = require libs/jquery-retina
// = require libs/jquery.popupoverlay
// = require libs/messg

// = require site_logic/application
// = require serviceworker-companion

// = require i18n
// = require i18n-rules
// = require lazysizes.min

i18n 实际上是我已经安装的 gem,我在 application.js 文件所在的同一文件夹中没有任何 i18n 文件,我已经在浏览器中看到该文件已成功连接到 application.js

我想知道这怎么可能?因为通常该文件应该在同一目录中。

标签: ruby-on-railssprocketsrails-sprocketsi18n-js

解决方案


Sprockets 会查看 include 中指定的路径Rails.application.config.assets.paths,它还app/assets包括Rails 引擎添加的任何路径。lib/assetsvendor/assets

引擎中的资产以与完整应用程序相同的方式工作。app/assets因为引擎类继承自 Rails::Engine,应用程序将知道在引擎和 lib/assets目录中查找资产。

Bundler.require(*Rails.groups)您正在使用的 gem 被编写为引擎,并在 in需要它们时安装config/application.rb

看:


推荐阅读