从 gem 获取资产在 Rails 4.2 中不再有效
requiring assets from gem doe not work anymore in Rails 4.2
我有一个 Rails 4.1(.10) 应用程序,我正在尝试升级到 Rails 4.2(.1),但我很难做到这一点。
问题与如何从 gem 我用来在多个应用程序之间共享资产的资产加载有关。
在我的 gem 我有以下代码
# /assets_gem/app/assets/javascript/my_js.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require turbolinks
//= require ../../../vendor/assets/javascripts/bootstrap/bootstrap-alert
//= require ../../../vendor/assets/javascripts/bootstrap/bootstrap-tooltip
//= require ../../../vendor/assets/javascripts/bootstrap/bootstrap-popover
在 assets_gem/vendor/assets/javascripts/bootstrap 我有 3 个 js 文件。
在我的 Rails 应用程序中,我有以下代码
# idx/app/assets/javascripts/application.js
//= require my_js
//= require_tree ./application
在 Rails 4.1.10 和 Sprockets 2.12.3 中一切正常,但是当我升级到 Rails 4.2.1 和 Sprockets 3.0.1 时,出现以下错误
Sprockets::FileNotFound at / couldn't find file
'../../../vendor/assets/javascripts/bootstrap/bootstrap-alert' with
type 'application/javascript'
我是否应该在 Sprockets 3+ 下以不同的方式要求我的供应商资产?
谢谢
vendor/assets/javascripts
已包含在默认搜索路径中,因此您只需要 require bootstrap/bootstrap-alert
等
您也可以在 application.rb
中添加路径
config.assets << Rails.root.join('vendor','assets','my_components')
我有一个 Rails 4.1(.10) 应用程序,我正在尝试升级到 Rails 4.2(.1),但我很难做到这一点。
问题与如何从 gem 我用来在多个应用程序之间共享资产的资产加载有关。
在我的 gem 我有以下代码
# /assets_gem/app/assets/javascript/my_js.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require turbolinks
//= require ../../../vendor/assets/javascripts/bootstrap/bootstrap-alert
//= require ../../../vendor/assets/javascripts/bootstrap/bootstrap-tooltip
//= require ../../../vendor/assets/javascripts/bootstrap/bootstrap-popover
在 assets_gem/vendor/assets/javascripts/bootstrap 我有 3 个 js 文件。
在我的 Rails 应用程序中,我有以下代码
# idx/app/assets/javascripts/application.js
//= require my_js
//= require_tree ./application
在 Rails 4.1.10 和 Sprockets 2.12.3 中一切正常,但是当我升级到 Rails 4.2.1 和 Sprockets 3.0.1 时,出现以下错误
Sprockets::FileNotFound at / couldn't find file '../../../vendor/assets/javascripts/bootstrap/bootstrap-alert' with type 'application/javascript'
我是否应该在 Sprockets 3+ 下以不同的方式要求我的供应商资产?
谢谢
vendor/assets/javascripts
已包含在默认搜索路径中,因此您只需要 require bootstrap/bootstrap-alert
等
您也可以在 application.rb
中添加路径config.assets << Rails.root.join('vendor','assets','my_components')