我的Rails 5资产都没有缩减生产

时间:2016-08-24 15:36:30

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

我在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

从我的资产文件夹中解决了问题

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

2 个答案:

答案 0 :(得分:2)

你的Gemfile是什么样的? uglifier有一个JavaScript运行器吗?经常使用therubyracer,我对mini_racer及其增强的效果非常满意。

在你的Gemfile中:

gem 'mini_racer'

然后运行bundle install并提交。

答案 1 :(得分:1)

总结我和OP对主要帖子的评论的结论,问题不在于缩小是不起作用的,而是缩小的资产没有被使用。这是因为一点上的资产已经预编译到public/assets并检入Git;公共的,未公开的资产在服务时优先于缩小的资产。

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

git rm -r public/assets

通常不鼓励将预编译资产检入版本控制,但这取决于您的部署系统。使用Heroku,通常没有必要。有关详细信息,请参阅Do you add public/assets in version control?