Commit Graph

149 Commits

Author SHA1 Message Date
Kane York 5f3fd23fa8
DEV: Add stub flush_sw task to prevent rebuild errors (#10021) 2020-06-10 13:07:37 -07:00
Aman Gupta Karmani 6358e79f0f
FIX: catch NoMethodError during precompile_css too (#9940)
Ran into this on heroku:

    NoMethodError: undefined method `enabled?' for #<Theme:0x0000558f069e7718>
    vendor/bundle/ruby/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_methods.rb:431:in `method_missing'
    app/models/theme.rb:155:in `block (2 levels) in transform_ids'
    vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
    vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
    vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.1/lib/active_record/relation/query_methods.rb:260:in `select'
    vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.1/lib/active_record/relation/query_methods.rb:260:in `select'
    app/models/theme.rb:155:in `block in transform_ids'
    app/models/theme.rb:105:in `get_set_cache'
    app/models/theme.rb:140:in `transform_ids'
    app/models/theme.rb:321:in `list_baked_fields'
    app/models/theme.rb:317:in `resolve_baked_field'
    lib/stylesheet/manager.rb:289:in `theme_digest'
2020-06-02 15:18:03 +10:00
Roman Rizzi 8eb2147f1f
FIX: Ensure sourcemap's source is correct. Uses the full assets path this time. (#8774) 2020-01-23 14:44:00 -03:00
romanrizzi 1de5b4ad64 Revert "FIX: Ensure sourcemap's source is correct"
This reverts commit 4553a0f6e0.
2020-01-22 16:31:34 -03:00
Roman Rizzi 4553a0f6e0
FIX: Ensure sourcemap's source is correct 2020-01-22 12:57:28 -03:00
romanrizzi b13f427450 DEV: Drop uglifyJS V2 support 2019-12-04 15:58:38 -03:00
Jeff Wong c6d8dbd4a9 Revert "FEATURE: Normalize the service worker route (#8359)"
This reverts commit 9799a651b6.
2019-11-20 14:10:17 -08:00
Jeff Wong 9799a651b6
FEATURE: Normalize the service worker route (#8359)
* FEATURE: Normalize the service worker route

Update cache headers so they are not immutable outside of the rails app

Add the ability to purge the service worker cache from localhost

Rails -> nginx will pass immutable flags so the file is cached until reloaded.
In most cases, nginx will have its cache flushed on rebuild (new image)

For those needing dynamic re-caching (such as upgrading via the UI),
a rake task for flushing the service worker script is provided
through `assets:flush_sw`
2019-11-20 11:33:41 -08:00
Roman Rizzi 10478cb395
DEV: Bump uglifyjs (#7834)
* Rewrite uglifyjs command to work with 3.x

* Use ES5 syntax in plain JS files

* Use the older command if uglifyJS V2.x is installed
2019-10-09 10:02:49 -03:00
Sam Saffron 215216df48 FIX: stop re-downloading backup maxmind
We omitted updating the mmdb_time which changed causing a constant
re-download of the maxmind db
2019-06-13 17:42:26 +10:00
Sam Saffron 3de8c58134 DEV: clean up backup maxmind path
This follows up on 6580025a

reuses a list and removes a map that was erronuously there.
2019-05-28 11:47:58 +10:00
Sam Saffron 6580025af9 FEATURE: add backup directory for mmdb files
This new `DISCOURSE_MAXMIND_BACKUP_PATH` can be used a secondary location
for maxmind db. That way a build machine, for example can cache it on the
host and reuse between builds.

Also per 5bfeef77 added proper error raising for download fails from
dedicated rake task

This also moves "refresh_maxmind_db_during_precompile_days" to a global
setting, it did not make sense in a site setting
2019-05-27 16:51:24 +10:00
Régis Hanol 2f5938c3bf DEV: use FileHelper to download MaxMindDB 2019-05-24 18:11:39 +02:00
Régis Hanol 8c9ffee3af TEMP: log more information when failing to download db 2019-05-24 17:33:52 +02:00
Régis Hanol 9ed2c54e27 TEMP: log information when failing to download db 2019-05-24 17:26:04 +02:00
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
Penar Musaraj a92c925378 Use faster Brotli compression for non-default locale files 2019-05-08 14:55:24 -04:00
Penar Musaraj d9ab722d05 Revert "Revert "PERF: Skip compressing locales for faster rebuilds (#7501)" (#7502)"
This reverts commit 6ea811c923.
2019-05-08 14:55:06 -04:00
Joffrey JAFFEUX 6ea811c923
Revert "PERF: Skip compressing locales for faster rebuilds (#7501)" (#7502) 2019-05-08 07:54:21 +02:00
Sam Saffron 5c0bb29461 DEV: re-enable compression for node asset compilation
#b9d82818 makes enormous improvements to our bootstrap time, however going
to still keep compress for now despite the cost and watch it for a few weeks
2019-05-08 10:24:57 +10:00
Penar Musaraj b9d8281818 PERF: Skip compressing locales for faster rebuilds (#7501)
* Do not brotli all locales in precompile

* Try without gzip

* uglify without compressing, always gzip

* skip uglify for unused locales

* FIX: Uglifier needs harmony for ES6 compatibility

* Use node uglifier if available

* Minor refactor
2019-05-08 10:22:19 +10:00
Sam Saffron 84f12ac3f7 DEV: No need to carry two brotli implementations around
old version of brotli binary is long gone, require brotli 1.0.0 and up
2019-04-11 16:53:29 +10:00
Sam Saffron baa7a9836c FEATURE: remove "COMPRESS_BROTLI" optional behavior
The compress brotli functionality is no longer optional, this has worked
well for years. The name of the ENV var is also confusing cause it does
not have a `DISCOURSE_` prefix which caused issues with the web upgrader

Brotli support is now unconditionally on
2019-04-11 12:36:18 +10:00
Bianca Nenciu c523a12187 FIX: Fix assets:precompile rake task. 2019-04-10 14:03:26 +03:00
Bianca Nenciu 4555d0c598 FEATURE: Refresh MaxmindDb during assets:precompile. (#7340) 2019-04-10 11:37:29 +02:00
David Taylor bc52437153 FIX: Add additional rescue for assets:precompile
This error can be caused if assets are precompiled before the database has been migrated
2019-03-07 14:03:05 +00:00
Penar Musaraj d639cadb7a
DEV: Plugin scss errors should break precompile (#6974) 2019-02-07 09:27:42 -05:00
Guo Xiang Tan 77c293f82d Prefer `Process.clock_gettime` over `Time.now`. 2018-10-05 10:25:52 +08:00
Guo Xiang Tan 13dde44c72 FIX: Limit concurrent `assets:precompile` to number of available cores. 2018-10-03 16:46:21 +08:00
Sam d1b21aa73b add timings to asset precompile 2018-07-04 09:42:38 +10:00
Sam 89ad2b5900 DEV: Rails 5.2 upgrade and global gem upgrade
This updates tests to use latest rails 5 practice
and updates ALL dependencies that could be updated

Performance testing shows that performance has not regressed
if anything it is marginally faster now.
2018-06-07 14:21:33 +10:00
Sam 5a8d2b5e45 FIX: rake assets:precompile should be re-runnable 2018-05-31 16:18:01 +10:00
Michael Brown 45c19e44f0 assets rake task: only try and detect brotli if COMPRESS_BROTLI is set 2017-11-24 12:00:38 -05:00
Michael Brown 5584085943 assets rake task: detect the brotli version on the image as the usage changes 2017-11-24 10:40:57 -05:00
Michael Brown 3c60702663 assets rake task: gzip and brotli exit codes exist for a reason - to be checked 2017-11-24 09:52:08 -05:00
Guo Xiang Tan 5012d46cbd Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
Joffrey JAFFEUX 0a478905b9 FIX: ensure we clear emoji cache before recompilation 2017-07-05 10:36:06 +02:00
Sam Saffron 1dc55bcc5b attempt to handle one more multisite edge case 2017-05-05 13:51:26 -04:00
Sam 4ed4d77fd3 correct the monkey patch 2017-04-14 15:06:52 -04:00
Sam 8370b4b1b7 FIX: don't precompile if we have no themes table 2017-04-14 10:33:35 -04:00
Sam 4161a7abec FIX: allow CSS precompilation to access newly manifested assets 2017-04-14 10:30:19 -04:00
Sam 8cd9afcfad move CSS precompilation to last step 2017-04-12 12:30:24 -04:00
Sam a3e8c3cd7b FEATURE: Native theme support
This feature introduces the concept of themes. Themes are an evolution
of site customizations.

Themes introduce two very big conceptual changes:

- A theme may include other "child themes", children can include grand
children and so on.

- A theme may specify a color scheme

The change does away with the idea of "enabled" color schemes.

It also adds a bunch of big niceties like

- You can source a theme from a git repo

- History for themes is much improved

- You can only have a single enabled theme. Themes can be selected by
    users, if you opt for it.

On a technical level this change comes with a whole bunch of goodies

- All CSS is now compiled using a custom pipeline that uses libsass
    see /lib/stylesheet

- There is a single pipeline for css compilation (in the past we used
    one for customizations and another one for the rest of the app

- The stylesheet pipeline is now divorced of sprockets, there is no
   reliance on sprockets for CSS bundling

- CSS is generated with source maps everywhere (including themes) this
    makes debugging much easier

- Our "live reloader" is smarter and avoid a flash of unstyled content
   we run a file watcher in "puma" in dev so you no longer need to run
   rake autospec to watch for CSS changes
2017-04-12 10:53:49 -04:00
Guo Xiang Tan fc3c34b78f Allow Brotli compression to be disabled when precompiling. 2017-03-27 11:55:43 +08:00
Sam c106ca6778 FEATURE: fallback asset path for multi host setups 2017-03-20 15:59:17 -04:00
Sam bc96f0fe78 rescue failure to backup assets 2017-03-20 13:43:59 -04:00
Sam e14a63cc88 FEATURE: add support for backup asset path post precompile 2017-03-20 13:05:39 -04:00
Sam 20ed11f9a5 We must GC here otherwise we risk not freeing our v8 contexts 2017-03-10 11:36:10 -05:00
Sam b68d08404d shell to node to avoid high memory usage 2017-03-09 17:05:55 -05:00
Sam ab3faeb0f9 PERF: user mini racer to uglify assets 2017-03-09 16:44:50 -05:00
Guo Xiang Tan 2c1249f381 Remove monkey patch. 2016-08-23 12:04:53 +08:00
Sam fe1ebee791 we need to fix permissions 2016-06-07 17:43:09 +10:00
Sam d0c5dc9280 rename CONCURRENT to SPROCKETS_CONCURRENT 2016-06-07 17:03:05 +10:00
Sam 8d1a556f3e FEATURE: Add brotli compression option to precompile
To enable brotli compression on static assets use COMPRESS_BROTLI
2016-06-07 16:55:57 +10:00
Guo Xiang Tan b744306654
PERF: Uglify and gzip assets concurrently. 2016-04-21 10:36:09 +08:00
Guo Xiang Tan 95e0948fba FIX: Don't use Uglifier that ships with Sprockets. 2016-04-19 14:29:20 +08:00
Guo Xiang Tan 6a33fcf48e FIX: Do not gzip when using uglifier. 2016-04-19 12:27:51 +08:00
Sam 0032047804 missing a bracket 2016-02-05 15:01:12 +11:00
Sam 886273f158 FIX: when CDN assets are not in root path source maps fail 2016-02-05 13:05:47 +11:00
Jeff Atwood 1a8487cf7b we want screw_ie8 here as we don't support IE9 2016-01-11 03:13:37 -08:00
Jeff Atwood 770adbaf71 gzip 9 takes 2x as long as 7 for +0.1% compression 2016-01-11 02:53:28 -08:00
Sam 25db4cc4d9 added DONT_PRECOMPILE_CSS env var 2015-10-13 10:48:21 +11:00
Sam 42b72a9834 parallel is not really helping, need a diff approach. 2015-10-13 10:14:48 +11:00
Sam 5f62c592a4 FEATURE: CSS_COMPILE_THREADS env setting for compiling CSS concurrently 2015-10-12 17:31:37 +11:00
Sam 42925b46b8 FEATURE: allow DONT_MINIFY flag in production for assets:precompile 2015-09-29 11:54:16 +10:00
Sam 9cad925c67 FIX: correct error message on precompile fail 2015-09-22 11:28:31 +10:00
Kane York d6129001b9 FIX: Provide proper source map URLs with a CDN 2015-07-21 11:52:54 -07:00
Sam 535e8cac5d don't force caching when compiling 2015-05-22 11:22:12 +10:00
Sam 89ac825641 add a force to ensure we properly cache stylesheets 2015-05-21 18:06:33 +10:00
Sam 45bdd23689 FEATURE: support user local switching to RTL correctly
FEATURE: support RTL in multisite
2015-05-20 15:56:54 +10:00
Neil Lalonde 406c8bb340 PERF: don't recompile css files that have already been compiled 2015-05-12 16:12:49 -04:00
Jamie Nguyen 5d16db1c48 Avoid gzip "-k" option for wider OS compatibility
The "-k" option tells gzip to keep the original files intact and is an
alternative to `gzip -c file > file.gz`. It was implemented in 2013:
http://git.savannah.gnu.org/cgit/gzip.git/commit/?id=0192f02

There are a few popular operating systems (ie, Red Hat 7, Debian Wheezy)
whose version of gzip does not have the "-k" option. Compiling assets
breaks on these operating systems. Using "-c" instead ensures that it
works even with older versions of gzip.
2015-02-24 15:19:23 +00:00
Robin Ward 3aa165d3b6 Provides the ability to skip minification of some JS assets. 2015-02-20 15:51:38 -05:00
Sam b279b1daa0 FIX: reduce verboseness of uglify command
PERF: do not generate source maps in ruby mode
2014-12-18 04:14:12 +11:00
Sam f8fb823924 FEATURE: source maps in production for JavaScripts 2014-12-12 18:53:26 +11:00
Sam 5aaafff798 cache breaker for new uglify options 2014-10-14 11:04:07 +11:00
Robin Ward a67d1c1765 FIX: Symbol was missing colon 2014-10-15 17:54:17 -04:00
Robin Ward 65ab88da77 Let's try to change Uglifier settings properly 2014-10-15 16:51:16 -04:00
Sam 2be03371ae FEATURE: allow a central redis cache for assets 2014-09-23 16:50:17 +10:00
Neil Lalonde 17f0777d14 For heroku, check if necessary table exist before trying to precompile assets 2014-06-12 14:41:45 -04:00
Neil Lalonde d69472c9fb FIX: production css digest not changing 2014-05-29 15:42:50 -04:00
Sam fad868c78f Bump hashes on various files
Upgrade jquery


I made this commit cause my JS debugging CDN support added a header and
wanted we bump cache everywhere
2014-05-15 15:52:09 +10:00
Neil Lalonde c4d3aa3d47 Theming: a UI to choose some base colors that are applied to all the site css. CSS compiled outside of asset pipeline. 2014-05-14 10:18:12 -04:00
Sam 913c4f7b6e BUGFIX: caching sass is not valid due to "import" being used 2014-04-23 17:04:25 +10:00
Vikhyat Korrapati 8c129e480a Always use DiscourseSassImporter, add optional sprockets deps tracking. 2014-04-09 19:17:19 +05:30
Vikhyat Korrapati 45a23f524a Fix asset precompilation issues. 2014-04-01 23:05:17 +05:30
Vikhyat Korrapati ef99ab59a5 Allow importing Discourse styles in custom stylesheets to modify vars. 2014-04-01 23:04:50 +05:30
Régis Hanol 77a8a4083a Revert "Merge pull request #2125 from vikhyat/css-variables"
This reverts commit b537de3ca5, reversing
changes made to b925827e5b.
2014-04-01 16:24:29 +02:00
Vikhyat Korrapati ddd1dfe896 Allow importing Discourse styles in custom stylesheets to modify vars. 2014-04-01 15:25:43 +05:30
Sam d969958b18 PERF: workaround aweful sass compiling perf with HUGE css files 2014-03-04 17:16:53 +11:00
Sam f602c568e2 PERF: speed up css precompilation by caching 2014-03-04 16:55:23 +11:00
Sam cfa5882035 Be slightly less aggressive at clearing assets 2014-02-07 21:43:05 +11:00
Sam 8e9cfdfcda BUGFIX: plugins not updating after assets:precompile
Now that we have a fancy cache we can nuke all old assets
This is way better cause it ensures all .erbs get re-evaluated
And ensures plugins are updated
2014-02-07 11:37:07 +11:00
Sam d9df40dfcd minor refactor 2014-02-06 17:07:15 +11:00
Sam a69f59ef51 FEATURE: much faster asset precompilation with a redis backed cache 2014-02-06 16:55:53 +11:00
Sam 66afabcf4c stop messing with asset pipeline defaults
stripping postfixes is wasteful and uneeded. It messes up our build
2013-12-19 12:33:17 +11:00
Scott Carleton 908ba32d37 Avoiding double manifest files
Capistrano chokes if there's two manifest files. 
http://meta.discourse.org/t/rails-4-non-digest-assets-and-capistrano/10948?u=scotterc
2013-11-14 18:22:44 -05:00
Sam b11e665ecc Rails 4 is now the out-of-the-box default 2013-11-05 09:36:52 +11:00
Sam cc27c5f363 Rails 4 changes behavior of precompile not to include originals
This patch will restore rails 3 beavior and fix emoji etc under rails 4
2013-11-04 09:58:34 +11:00