我创建了一个gem(不是引擎),其中包含一些js文件:
lib/assets/javascripts/mygem.js
在我的应用程序中,我想将此js包含在application.js中:
# app/assets/javascripts/application.js
// require mygem # DOESN'T WORK
这行不通。
是否可以包含宝石资产?或者,我应该为gem生成一个生成器,该生成器会将gem中的所有资产复制到应用程序资产文件夹中。
最佳答案
将Engine类添加到gem并在gem中要求它:
# lib/mygem/rails/engine.rb
module Mygem
module Rails
class Engine < ::Rails::Engine
end
end
end
# lib/mygem.rb:
module Mygem
require 'mygem/rails/engine'
end
现在,宝石中的资产可以在应用程序中使用:
宝石文件:
gem 'mygem'
app / assets / javascripts / application.js
//= require mygem
阅读有关将资产添加到宝石的信息:
http://guides.rubyonrails.org/asset_pipeline.html#adding-assets-to-your-gems