Rails 3.1 资产预编译 - 包括所有 javascript 文件

     2023-02-15     165

关键词:

【中文标题】Rails 3.1 资产预编译 - 包括所有 javascript 文件【英文标题】:Rails 3.1 asset precompilation - include all javascript files 【发布时间】:2011-11-08 19:59:16 【问题描述】:

我希望 Rails 3.1 获取更多我的资产进行预编译。特别是,编译文件的默认匹配器不会添加来自vendor/assets/javascripts.js 文件。我可以将资产添加到config.assets.precompile 列表中,但这似乎很烦人。我不想在 application.js 清单中引用它们,因为我不希望它们包含在所有页面中。

总之,有什么方法可以请求vendor/assets/javascripts 中的所有.js 文件由rake assets:precompile 预编译,但不包含在所有页面中?

【问题讨论】:

【参考方案1】:

config.assets.precompile 接受正则表达式和通配符匹配 - 因此要确保编译 所有 js 文件,而不用指定每个文件的名称,这样的事情应该可以解决问题:

config.assets.precompile << '*.js'

【讨论】:

您可能想要覆盖已经在预编译中的内容:config.assets.precompile = ['*.js', '*.css'] 虽然您可能还想为您的图片添加一些内容。 @pat 实际上,asset/images 目录中的所有图像都包括在内。这可能是因为它们不需要任何处理。 虽然文档中没有提到,但是如果你看一下sprockets的代码,你会发现config.assets.precompile也接受Proc,也就是说你可以做一些这样的技巧:@987654321 @ 不知道为什么 rake assets:precompile 默认情况下不这样做,逻辑上它应该这样做。【参考方案2】:

我修改了Rails config.assets.precompile setting to process all CSS and JS files in app/assets 中给出的示例,这是我的版本,它从 /app 和 /vendor 获取所有资产,除了部分(从_开始)

config.assets.precompile << Proc.new  |path|
  if path =~ /\.(css|js)\z/
    full_path = Rails.application.assets.resolve(path).to_path
    app_assets_path = Rails.root.join('app', 'assets').to_path
    vendor_assets_path = Rails.root.join('vendor', 'assets').to_path

    if ((full_path.starts_with? app_assets_path) || (full_path.starts_with? vendor_assets_path)) && (!path.starts_with? '_')
      puts "\t" + full_path.slice(Rails.root.to_path.size..-1)
      true
    else
      false
    end
  else
    false
  end

【讨论】:

【参考方案3】:
# Precompile *all* assets, except those that start with underscore
config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/

完整的解释请参考 55 分钟 Blog。

这将预编译任何资产,而不仅仅是 JavaScript(.js、.coffee、.swf、.css、.scss)

【讨论】:

这很棒。我有什么理由不想想要预编译所有资产? @AlexChaffee,如果您使用的是 SASS 或要求 cmets 来准备资产“捆绑”。

Rails 3.1 资产管道 - 为啥我的图像没有为生产进行预编译?

】Rails3.1资产管道-为啥我的图像没有为生产进行预编译?【英文标题】:Rails3.1Assetpipeline-Whymyimagesdonotprecompileforproduction?Rails3.1资产管道-为什么我的图像没有为生产进行预编译?【发布时间】:2011-11-0815:30:26【问题描述】:运行... 查看详情

加速资产:使用 Rails 3.1/3.2 Capistrano 部署预编译

】加速资产:使用Rails3.1/3.2Capistrano部署预编译【英文标题】:Speedupassets:precompilewithRails3.1/3.2Capistranodeployment【发布时间】:2012-02-1910:06:58【问题描述】:我的部署速度很慢,至少需要3分钟。部署期间缓慢的Capistrano任务是assets:pr... 查看详情

Heroku Rails 4 资产:预编译编译所有(也未更改)资产

】HerokuRails4资产:预编译编译所有(也未更改)资产【英文标题】:HerokuRails4assets:precompilecompilesall(alsounchanged)assets【发布时间】:2015-09-2915:13:36【问题描述】:在每次推送到Heroku时,所有资产都会被预编译,因此不仅是已更改... 查看详情

Ruby Rails 预编译资产与使用资产管道

】RubyRails预编译资产与使用资产管道【英文标题】:RubyRailsprecompilingassetsvs.usingtheassetpipeline【发布时间】:2016-03-1417:10:32【问题描述】:我想知道何时使用Rails.application.config.assets.precompile来包含Javascript插件,以及何时使用资产... 查看详情

未使用 Rails 测试环境中的预编译资产

】未使用Rails测试环境中的预编译资产【英文标题】:PrecompiledassetsinRailstestenvironmentnotused【发布时间】:2017-11-2209:06:57【问题描述】:我使用的是Rails5.1.1,对于我们的rspec功能测试,我们希望在运行所有功能测试之前使用预编译... 查看详情

Rails 3.1.1 资产预编译 - rake 中止

】Rails3.1.1资产预编译-rake中止【英文标题】:Rails3.1.1assetsprecompile-rakeaborted【发布时间】:2011-10-1111:36:02【问题描述】:编辑:还有其他人有什么建议吗?我完全被难住了!!!我有一个应用程序,其中所有资产都可以正常编译... 查看详情

Rails Heroku 预编译资产不加载 JS?

】RailsHeroku预编译资产不加载JS?【英文标题】:RailsHerokuPrecompiledAssetsNotLoadingJS?【发布时间】:2013-08-3022:09:15【问题描述】:我在Heroku上设置我的Rails应用程序时遇到了一个问题,我的所有CSS资产都已加载,但我的JS资产却没有... 查看详情

预编译 Rails AngularJS 资产

】预编译RailsAngularJS资产【英文标题】:PrecompilerailsAngularJSassets【发布时间】:2013-09-2709:50:06【问题描述】:我正在尝试使用RAILS_ENV=productionbundleexecrakeassets:precompile编译我的Rails应用程序资产,但这不会编译我的AngularJS资产,因... 查看详情

Rails:预编译资产缺少节点模块

】Rails:预编译资产缺少节点模块【英文标题】:Rails:Precompiledassetsmissingnodemodules【发布时间】:2018-05-1701:23:06【问题描述】:我在我的rails5.1应用程序中使用yarn(不是webpacker,只是默认的资产管道)。在开发环境中运行本地服... 查看详情

预编译资产失败的 Rails

】预编译资产失败的Rails【英文标题】:PrecompileAssetsFailedRails【发布时间】:2013-11-1123:56:45【问题描述】:我在Heroku上部署Rails4.0.1但是当我尝试预编译时出现以下错误:$rakeassets:precompilerakeaborted!uninitializedconstantSampleAppc:/Sites/sampl... 查看详情

RAILS 轨道资产:预编译失败

】RAILS轨道资产:预编译失败【英文标题】:RAILSrailsassets:precompilefails【发布时间】:2020-11-1722:10:26【问题描述】:我正在运行RAILS6.0.3,所以我使用webpacker。当我尝试在RAILS开发模式下使用railsassets:precompile编译资产时,它运行得... 查看详情

Rails 预编译供应商/资产

】Rails预编译供应商/资产【英文标题】:Railsprecompilevendor/asset【发布时间】:2014-09-1222:29:43【问题描述】:我正在尝试预编译供应商资产文件夹中的文件。在生产中的Rails控制台中,我得到了这个:putsRails.application.config.assets.prec... 查看详情

即使资产没有变化,也会发生 Rails 资产预编译

】即使资产没有变化,也会发生Rails资产预编译【英文标题】:Railsassetprecompilationhappeningevenifthereisnochangeinassets【发布时间】:2016-10-0913:44:29【问题描述】:我正在AWSOpsworks上运行rails堆栈。在before_symlink.rb部署钩子中,我有以下... 查看详情

如何为包括旧资产在内的所有资产强制使用新指纹?(代码片段)

在预编译资产时,我如何强制rails为资产生成新的指纹?目前我只是这样做:RAILS_ENV=productionbundleexecrakeassets:precompile但似乎某些资产仍在某处缓存,因此,我需要为所有资产生成新的指纹,我该怎么做?我正在使用Rails4.2答案在... 查看详情

为啥资产:Rails 6.1 上的预编译失败?

】为啥资产:Rails6.1上的预编译失败?【英文标题】:Whyisasset:precompilefailingonRails6.1?为什么资产:Rails6.1上的预编译失败?【发布时间】:2021-04-0722:49:22【问题描述】:我在app/assets/images中有一个图像资产,我正在尝试在按照assetp... 查看详情

rails 4 资产管道供应商资产图像未预编译

】rails4资产管道供应商资产图像未预编译【英文标题】:rails4assetpipelinevendorassetsimagesarenotbeingprecompiled【发布时间】:2012-12-2102:40:43【问题描述】:我的应用程序和fancybox2-railsgem使用rails4和ruby1.9.3,但是资产管道存在一般问题。... 查看详情

未检测到 Rails 预编译资产 Yarn 可执行文件

】未检测到Rails预编译资产Yarn可执行文件【英文标题】:RailsprecompileassetsYarnexecutablewasnotdetected【发布时间】:2018-01-1104:27:34【问题描述】:我有一个从Rails5.0转换为Rails5.1.0的Rails项目。当我尝试预编译资产时,我收到以下错误消... 查看详情

Rails 4 Heroku 资产:预编译失败

】Rails4Heroku资产:预编译失败【英文标题】:Rails4Herokuassets:precompilefailure【发布时间】:2014-01-1915:56:31【问题描述】:我有一个奇怪的情况,突然面临预编译失败,老实说,由于某种原因我看不到这个问题。我在这里添加了一个... 查看详情