你如何预编译除一个以外的所有Javascript文件?

时间:2014-02-28 01:51:43

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

为了避免在我的Rails 3.2网站上生成“资产未编译”错误,我将以下行添加到production.rb:

  config.assets.precompile += ['*.js']

这会预编译供应商中的所有.js文件,以便在从页面内部调用时它们已准备就绪。不幸的是,其中一个.js文件无法预编译而没有错误,所以我想跳过它。除了一个文件bad-file.js之外,我如何预编译所有.js文件?

2 个答案:

答案 0 :(得分:1)

你可以在application.rb

中这样做
    config.assets.precompile << Proc.new do |path|
      if path =~ /\.(css|js)\z/ &&  path!~ /bad-file\.js\z/
        full_path = Rails.application.assets.resolve(path).to_path
        app_assets_path = Rails.root.join('app', 'assets').to_path
        if full_path.starts_with? app_assets_path
          puts "including asset: " + full_path
          true
        else
          puts "excluding asset: " + full_path
          false
        end
      else
        false
      end
    end

你也可以用一种简单的方式来做,我测试了一下,不是同一个名字。

config.assets.precompile = [/^((?!bad-file\.js).)*$/]

这意味着文件路径不应包含子字符串“bad-file.js”。您可以更准确地改进正则表达式,添加目录信息或其他内容。

答案 1 :(得分:0)

在您的production.rb文件中尝试添加此内容。

config.assets.precompile + =%w(bad-file.js)