ruby-on-rails - Assets 管道预编译所有 Assets 文件夹子目录

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

我喜欢让我的 Assets 井井有条,但是,我遇到了预编译问题。它没有拾取子目录。以下是路径:

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

一切都适用于开发,但生产 = 不行。在我的生产环境中,我已经这样做了:

 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) } ]

最佳答案

# 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/**/") 

返回目录,位于

/images

目录。我假设您只推送到预编译器图像 Assets 。有道理吗?将其替换为:

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

关于ruby-on-rails - Assets 管道预编译所有 Assets 文件夹子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432460/

相关文章:

ruby-on-rails - Rails + CarrierWave : NoMethodError: undefined method `name' for nil:NilClass

ruby-on-rails - NoMethodError (filtered_pa​​rameters)

ruby-on-rails - 以编程方式检测并捕获 Rails 中的无限重定向循环

javascript - Rails 3.2/Active Admin - 自定义 Assets 管道路径不起作用,导致 ActionView::Template::Error (file.js 未预编译)

ruby-on-rails - 如何在 Rails 中访问初始化文件中的变量

ruby-on-rails - Rails 设计自定义 url

ruby - 在 Ruby 中的不同数组的特定位置从单个字符创建数组

Ruby 整数比较给出了错误的结果

ruby-on-rails-3 - Rails 3.1 从供应商/ Assets /图像提供图像

ruby-on-rails - Heroku *.js 不是预编译错误