在Rails 4中包含gem的资产

Max*_*vak 4 gem assets ruby-on-rails

我创建了一个gem(不是引擎),里面有一些js文件:

lib/assets/javascripts/mygem.js
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我想将这个js包含到application.js中:

# app/assets/javascripts/application.js

// require mygem  # DOESN'T WORK
Run Code Online (Sandbox Code Playgroud)

这不起作用.

是否可以包含宝石资产?或者我应该为gem编写一个生成器,它将所有资产从gem复制到application assets文件夹中.

Max*_*vak 5

将Engine类添加到gem并在gem中需要它:

# lib/mygem/rails/engine.rb
module Mygem
  module Rails
    class Engine < ::Rails::Engine

    end
  end
end
Run Code Online (Sandbox Code Playgroud)

 

# lib/mygem.rb:
module Mygem
  require 'mygem/rails/engine'

end
Run Code Online (Sandbox Code Playgroud)

现在,gem中的资产可用于应用程序:

的Gemfile:

 gem 'mygem'
Run Code Online (Sandbox Code Playgroud)

应用程序/资产/ JavaScript的/ application.js中

//= require mygem
Run Code Online (Sandbox Code Playgroud)

阅读有关向您的宝石添加资产的信息:

http://guides.rubyonrails.org/asset_pipeline.html#adding-assets-to-your-gems