我创建了一个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

10-06 09:29