ruby-on-rails – rails 3.1资产管道:忽略gem中的资产

我不太确定实际行为是什么,所以我的第一个问题是:
来自宝石(在我的案例中是Spree)的资产(例如javascripts)是否总是被编译?我不使用Spree的javascripts,因此不希望它们被编译.我不在我的application.js或任何其他javascript文件中要求它们,但是

rake assets:precompile

虽然编译它们.我只是不希望他们躺在我的公共/资产文件夹中.

所以我想我的问题是,有没有办法禁止从gem编译javascripts?

最佳答案
我想有一种聪明的方法来实现使用链轮的目标.也许有些require_directory而不是require_tree.

但最直接的方法是从资产路径中删除这些资产.要实现此目的,请在application.rb文件的最后添加它(在初始化程序中不起作用):

class Engine < Rails::Engine
   initializer "remove assets directories from pipeline" do |app|
     app.config.assets.paths = app.config.assets.paths - app.config.assets.paths.grep(/nice_regexp_here_to_match_the_dir_where_the_unwanted_files_live/)
   end
end

刚尝试了一个hack:将代码放在初始化程序中,但在application.rb的末尾需要它:

require "config/initializers/your_file'

我更喜欢非常具体的代码以这种方式显示.

转载注明原文:ruby-on-rails – rails 3.1资产管道:忽略gem中的资产 - 代码日志