【问题标题】:None of my Rails 5 assets are minifying in production我的 Rails 5 资产在生产中都没有缩小
【发布时间】:2016-08-24 15:36:30
【问题描述】:

我在 Heroku 上有一个 Rails 5.0.0.1 应用程序,当我在 Chrome 中打开开发者控制台并打开 CSS 和 JS 文件时,我可以看到它们都没有被缩小。这是在完成 Google 速度测试后首次引起我注意的。

这就是我的一些设置的样子...

application.js

//= require jquery
//= require jquery_ujs
//= require jquery-ui/autocomplete
//= require bootstrap-sprockets
//= require trix
//= require_tree .

application.scss

//Import bootstrap-sprockets
@import "bootstrap-sprockets";


// Import cerulean variables
@import "bootswatch/flatly/variables";

// Then bootstrap itself
@import "bootstrap";
@import "font-awesome";

// Bootstrap body padding for fixed navbar
/*body { padding-top: 60px; }*/

// And finally bootswatch style itself
@import "bootswatch/flatly/bootswatch";

// Whatever application styles you have go last
@import "overrides";
@import "trip";

我正在使用以下宝石:

gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'bootstrap-sass', '~> 3.3.6'
gem 'bootswatch-rails'
gem 'bootstrap-social-rails'
gem 'bootstrap_form'

我在production.rb中设置了以下选项

# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass

# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false

我已经预编译和清理了资产,甚至使用

修改了资产版本
Rails.application.config.assets.version = '1.1'

我什至使用rake assets:clobber从我的资产文件夹中删除了地狱

现在真的不知道为什么这些资产都没有缩小。非常感谢任何帮助。

【问题讨论】:

  • 当你在本地运行rake assets:precompile时,输出的资产是否被缩小了?您需要将 development.rb 设置临时设置为与生产环境相同,以便正确测试。
  • 不。当我这样做时,仍然没有缩小 css 或 js 文件
  • 您的资产是否像您期望的那样被编译成application.css/application.js 文件?你试过设置config.assets.debug = false吗?这是升级到 Rails 5 后的新行为吗?
  • 是的,它们被编译成application.css/application.jsapplicaiton.css.gz and application.js.gz。我刚刚尝试设置config.assets.debug = false,但这并没有改变任何东西。这不是升级以来的新行为。还有一些奇怪的事情——如果我在 GitHub 上查看,这个项目显然是 64% 的 CSS,这明显高于我所有其他 Rails 项目
  • 您的问题可能是正在使用这些资产,而不是在 Heroku 部署期间构建的资产。我建议删除所有这些资产 (git rm -r public/assets) 并再次部署。但是,如果这会破坏您的生产站点,请准备回滚到以前的版本!

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


【解决方案1】:

您的 Gemfile 是什么样的?是否有用于 uglifier 的 JavaScript 运行程序? therubyracer 经常被使用,我对mini_racer 及其增强的性能相当满意。

在您的 Gemfile 中:

gem 'mini_racer'

然后运行bundle install 并提交。

【讨论】:

    【解决方案2】:

    总结一下我和 OP 在主帖中的 cmets 的结论,问题不是缩小不起作用,而是缩小的资产没有被使用。这是因为资产在某一时刻已被预编译为 public/assets 并检入 Git;然后,公共的、未缩小的资产在服务时优先于缩小的资产。

    因此,解决方案是从 Git 中删除这些工件:

    git rm -r public/assets
    

    通常不鼓励将预编译的资产检查到版本控制中,尽管这取决于您的部署系统。使用 Heroku,通常不需要。详情请见Do you add public/assets in version control?

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      相关资源
      最近更新 更多