ruby-on-rails - 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
我想知道这怎么可能?因为通常该文件应该在同一目录中。
解决方案
Sprockets 会查看 include 中指定的路径Rails.application.config.assets.paths
,它还app/assets
包括Rails 引擎添加的任何路径。lib/assets
vendor/assets
引擎中的资产以与完整应用程序相同的方式工作。
app/assets
因为引擎类继承自 Rails::Engine,应用程序将知道在引擎和lib/assets
目录中查找资产。
Bundler.require(*Rails.groups)
您正在使用的 gem 被编写为引擎,并在 in需要它们时安装config/application.rb
。
看:
推荐阅读
- ios - Xamarin iOS 绑定库本机框架的捆绑包在应用程序中无法识别
- excel - 链接用户窗体答案以更改宏中的文件路径
- python - 单独的线程来处理cherrypy中的特定API请求
- android - 仅在应用程序处于后台时显示推送通知
- javascript - page.evaluate() 中的代码不起作用
- python - 如何使用 pyVmomi 获取 vSAN 集群的重复数据删除和数据压缩状态?
- go - 同步 WaitGroup 不等待 goroutine 分配指针
- r - 如何将日期和时间从 UTC 转换为 R 中的本地时间?
- c# - 客户端发送证书但 GetClientCertificate 始终接收为 null
- google-chrome - Google 表格调试无休止的计算和缓慢的加载时间(Chrome 开发工具)