资产管道预编译所有资产文件夹子目录

时间:2014-03-16 03:02:03

标签: ruby-on-rails ruby asset-pipeline assets

我喜欢保持我的资产高度组织,但是,我遇到了预编译的问题。它没有拿起子目录。以下是路径:

assets
>fonts
>images
>>backgrounds
>>home
>>icons

一切都适用于dev,但prod =不行。在我的生产环境中,我已经做过:

 config.assets.enabled = true
  config.assets.compile = true
  config.assets.precompile += ['*.js', '*.ico', '*.png', '*.jpg']
  config.assets.initialize_on_precompile = true

我目前在application.rb文件中运行以下函数:

   # Add All Asset Pipeline Sub Folders
    Dir.glob("#{Rails.root}/app/assets/images/**/").each do |path|
      config.assets.paths << path
    end

这是我一直在努力的事情,没有太多运气。我希望用几行代码动态地拾取所有创建/更改的目录,这样我就不必一个一个地添加它们.......

  # Add All Asset Pipeline Sub Folders
    Dir.glob("#{Rails.root}/app/assets/images/**/").each do |path|
      config.assets.paths << path
      config.assets.precompile += ['#{path}/*']
    end

思考?

更新解决方案

我最终在我的作品rb中使用了以下内容:

  config.assets.precompile += ['*.js', '*.ico', '*.png', '*.jpg']
  config.assets.precompile += [ Dir["#{Rails.root}/app/assets/images/**/*"].reject {|fn| File.directory?(fn) } ]

1 个答案:

答案 0 :(得分:3)

# Add All Asset Pipeline Sub Folders
Dir.glob("#{Rails.root}/app/assets/images/**/").each do |path|
   ..  # seems you include /assets/images sub directories, expand the path

Ruby命令:

Dir.glob("#{Rails.root}/app/assets/images/**/") 

返回位于

内的目录
  

/图​​像

目录。我假设您只推送预编译器图像资产。有意义吗?替换为:

 Dir.glob("#{Rails.root}/app/assets/**/")