【问题标题】:How do you Precompile all Javascript Files except One?您如何预编译除一个之外的所有 Javascript 文件?
【发布时间】:2014-02-28 01:51:43
【问题描述】:
为了避免在我的 Rails 3.2 站点上的生产中出现“资产未编译”错误,我在 production.rb 中添加了以下行:
config.assets.precompile += ['*.js']
这会预编译 vendor 中的所有 .js 文件,以便在从页面内部调用它们时准备好它们。不幸的是,其中一个 .js 文件无法在没有错误的情况下进行预编译,所以我想跳过它。如何预编译除一个文件bad-file.js 之外的所有 .js 文件?
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3.2
asset-pipeline
【解决方案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”。您可以更准确地改进正则表达式,添加目录信息或其他内容。
【解决方案2】:
在你的 production.rb 文件中尝试添加这个。
config.assets.precompile += %w(bad-file.js)