Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jekyll build takes minutes to complete #228

Closed
motymichaely opened this issue Dec 29, 2015 · 12 comments
Closed

Jekyll build takes minutes to complete #228

motymichaely opened this issue Dec 29, 2015 · 12 comments
Milestone

Comments

@motymichaely
Copy link

For some reason, after migrating to Jekyll 3.0 (and Jekyll Assets 2), site build takes way longer than it was before the migration (from ~10 seconds to ~300 seconds).

I've already opened Jekyll Core's issue #4297, and seems like it's a Jekyll Assets issue.

Any help would be highly appreciated.

Thanks!

@envygeeks
Copy link
Owner

Please provide a list of your gems.

@motymichaely
Copy link
Author

Here it is:

Gemfile:

source 'https://rubygems.org'
ruby '2.2.4'

gem 'rake'

gem 'sass'
gem 'jekyll'

gem 'liquid-c'

gem 'jekyll-assets'
gem 'jekyll-redirect-from'
gem 'jekyll-html-pipeline'
gem 'jekyll-paginate'
gem 'jekyll-watch'

gem 'yui-compressor', '~> 0.12.0'

# HTML Pipeline and Markdown
gem 'html-pipeline'
gem 'github-linguist'
gem 'github-markdown'
gem 'pygments.rb'


gem 'bootstrap-sass'
gem 'googl'

gem 'tzinfo'

group :development do
  gem 'thin'
  gem 'rack'
  gem 'guard-jekyll-plus', git: 'https://github.com/imathis/guard-jekyll-plus.git'
  gem 'guard-livereload'
end

group :test do
  gem 'html-proofer'
end

Gemfile.lock

GIT
  remote: https://github.com/imathis/guard-jekyll-plus.git
  revision: 26e1426fb0972613d80dd5f0acf38ffcc1046a2c
  specs:
    guard-jekyll-plus (2.0.2)
      guard (~> 2.10, >= 2.10.3)
      guard-compat (~> 1.1)
      jekyll (>= 1.0.0)

GEM
  remote: https://rubygems.org/
  specs:
    activesupport (4.2.5)
      i18n (~> 0.7)
      json (~> 1.7, >= 1.7.7)
      minitest (~> 5.1)
      thread_safe (~> 0.3, >= 0.3.4)
      tzinfo (~> 1.1)
    addressable (2.4.0)
    autoprefixer-rails (6.2.1)
      execjs
      json
    bootstrap-sass (3.3.6)
      autoprefixer-rails (>= 5.2.1)
      sass (>= 3.3.4)
    charlock_holmes (0.7.3)
    coderay (1.1.0)
    colorator (0.1)
    colored (1.2)
    concurrent-ruby (1.0.0)
    daemons (1.2.3)
    em-websocket (0.5.1)
      eventmachine (>= 0.12.9)
      http_parser.rb (~> 0.6.0)
    escape_utils (1.1.0)
    ethon (0.8.0)
      ffi (>= 1.3.0)
    eventmachine (1.0.8)
    execjs (2.6.0)
    fastimage (1.8.1)
      addressable (~> 2.3, >= 2.3.5)
    ffi (1.9.10)
    formatador (0.2.5)
    github-linguist (4.7.3)
      charlock_holmes (~> 0.7.3)
      escape_utils (~> 1.1.0)
      mime-types (>= 1.19)
      rugged (>= 0.23.0b)
    github-markdown (0.6.9)
    googl (0.7.1)
      httparty (~> 0.10)
      json (>= 1.4.6)
    guard (2.13.0)
      formatador (>= 0.2.4)
      listen (>= 2.7, <= 4.0)
      lumberjack (~> 1.0)
      nenv (~> 0.1)
      notiffany (~> 0.0)
      pry (>= 0.9.12)
      shellany (~> 0.0)
      thor (>= 0.18.1)
    guard-compat (1.2.1)
    guard-livereload (2.5.1)
      em-websocket (~> 0.5)
      guard (~> 2.8)
      guard-compat (~> 1.0)
      multi_json (~> 1.8)
    html-pipeline (1.11.0)
      activesupport (>= 2)
      nokogiri (~> 1.4)
    html-proofer (2.6.1)
      activesupport (~> 4.2)
      addressable (~> 2.3)
      colored (~> 1.2)
      mercenary (~> 0.3.2)
      nokogiri (~> 1.5)
      parallel (~> 1.3)
      typhoeus (~> 0.7)
      yell (~> 2.0)
    http_parser.rb (0.6.0)
    httparty (0.13.7)
      json (~> 1.8)
      multi_xml (>= 0.5.2)
    i18n (0.7.0)
    jekyll (3.0.1)
      colorator (~> 0.1)
      jekyll-sass-converter (~> 1.0)
      jekyll-watch (~> 1.1)
      kramdown (~> 1.3)
      liquid (~> 3.0)
      mercenary (~> 0.3.3)
      rouge (~> 1.7)
      safe_yaml (~> 1.0)
    jekyll-assets (2.1.2)
      fastimage (~> 1.8)
      jekyll (~> 3.0)
      sprockets (~> 3.3)
      sprockets-helpers (~> 1.2)
      tilt (~> 2.0)
    jekyll-html-pipeline (0.1.4)
      html-pipeline (~> 1.0)
      jekyll (>= 2.0)
    jekyll-paginate (1.1.0)
    jekyll-redirect-from (0.9.1)
      jekyll (>= 2.0)
    jekyll-sass-converter (1.3.0)
      sass (~> 3.2)
    jekyll-watch (1.3.0)
      listen (~> 3.0)
    json (1.8.3)
    kramdown (1.9.0)
    liquid (3.0.6)
    liquid-c (3.0.0)
      liquid (>= 3.0.0)
    listen (3.0.5)
      rb-fsevent (>= 0.9.3)
      rb-inotify (>= 0.9)
    lumberjack (1.0.9)
    mercenary (0.3.5)
    method_source (0.8.2)
    mime-types (3.0)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2015.1120)
    mini_portile2 (2.0.0)
    minitest (5.8.3)
    multi_json (1.11.2)
    multi_xml (0.5.5)
    nenv (0.2.0)
    nokogiri (1.6.7.1)
      mini_portile2 (~> 2.0.0.rc2)
    notiffany (0.0.8)
      nenv (~> 0.1)
      shellany (~> 0.0)
    parallel (1.6.1)
    posix-spawn (0.3.11)
    pry (0.10.3)
      coderay (~> 1.1.0)
      method_source (~> 0.8.1)
      slop (~> 3.4)
    pygments.rb (0.6.3)
      posix-spawn (~> 0.3.6)
      yajl-ruby (~> 1.2.0)
    rack (1.6.4)
    rake (10.4.2)
    rb-fsevent (0.9.6)
    rb-inotify (0.9.5)
      ffi (>= 0.5.0)
    rouge (1.10.1)
    rugged (0.24.0b11)
    safe_yaml (1.0.4)
    sass (3.4.20)
    shellany (0.0.1)
    slop (3.6.0)
    sprockets (3.5.2)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-helpers (1.2.1)
      sprockets (>= 2.2)
    thin (1.6.4)
      daemons (~> 1.0, >= 1.0.9)
      eventmachine (~> 1.0, >= 1.0.4)
      rack (~> 1.0)
    thor (0.19.1)
    thread_safe (0.3.5)
    tilt (2.0.1)
    typhoeus (0.8.0)
      ethon (>= 0.8.0)
    tzinfo (1.2.2)
      thread_safe (~> 0.1)
    yajl-ruby (1.2.1)
    yell (2.0.5)
    yui-compressor (0.12.0)

PLATFORMS
  ruby

DEPENDENCIES
  bootstrap-sass
  github-linguist
  github-markdown
  googl
  guard-jekyll-plus!
  guard-livereload
  html-pipeline
  html-proofer
  jekyll
  jekyll-assets
  jekyll-html-pipeline
  jekyll-paginate
  jekyll-redirect-from
  jekyll-watch
  liquid-c
  pygments.rb
  rack
  rake
  sass
  thin
  tzinfo
  yui-compressor (~> 0.12.0)

BUNDLED WITH
   1.11.2

@envygeeks
Copy link
Owner

That's exactly what I was looking to spot. Your problem is probably bootstrap-sass. This is a known issue I haven't decided if I want to fix or not (I probably will end up fixing it.) I've known about for a while, and something I had assumed that Sprockets 3 would handle, but actually, Sprockets doesn't cache that resource because it's imported by SASS. I know Rails works around it in their Sprockets by adding their own importer, something I will end up having to do but I just haven't had time to add it.

It's not because your cache is being deleted (and if it were that would be a Sprockets bug... we ignore .asset-cache on your behalf along with other folders we use and deem need to be ignored so you can remove that from your exclude list entirely.

@motymichaely
Copy link
Author

@envygeeks - Thanks for the clarification.

I will try to see how it works without bootstrap-sass.

And I will be happy to test it when a fix is applied.

@motymichaely
Copy link
Author

Ok, same goes after removing bootstrap-sass gem.

source 'https://rubygems.org'
ruby '2.2.4'

gem 'rake'

gem 'sass'
gem 'jekyll'

gem 'liquid-c'

gem 'jekyll-assets'
gem 'jekyll-redirect-from'
gem 'jekyll-html-pipeline'
gem 'jekyll-paginate'
gem 'jekyll-watch'

gem 'yui-compressor', '~> 0.12.0'

# HTML Pipeline and Markdown
gem 'html-pipeline'
gem 'github-linguist'
gem 'github-markdown'
gem 'pygments.rb'


# gem 'bootstrap-sass'
gem 'googl'

gem 'tzinfo'

group :development do
  gem 'thin'
  gem 'rack'
  gem 'guard-jekyll-plus', git: 'https://github.com/imathis/guard-jekyll-plus.git'
  gem 'guard-livereload'
end

group :test do
  gem 'html-proofer'
end

Gemfile.lock

GIT
  remote: https://github.com/imathis/guard-jekyll-plus.git
  revision: 26e1426fb0972613d80dd5f0acf38ffcc1046a2c
  specs:
    guard-jekyll-plus (2.0.2)
      guard (~> 2.10, >= 2.10.3)
      guard-compat (~> 1.1)
      jekyll (>= 1.0.0)

GEM
  remote: https://rubygems.org/
  specs:
    activesupport (4.2.5)
      i18n (~> 0.7)
      json (~> 1.7, >= 1.7.7)
      minitest (~> 5.1)
      thread_safe (~> 0.3, >= 0.3.4)
      tzinfo (~> 1.1)
    addressable (2.4.0)
    charlock_holmes (0.7.3)
    coderay (1.1.0)
    colorator (0.1)
    colored (1.2)
    concurrent-ruby (1.0.0)
    daemons (1.2.3)
    em-websocket (0.5.1)
      eventmachine (>= 0.12.9)
      http_parser.rb (~> 0.6.0)
    escape_utils (1.1.0)
    ethon (0.8.0)
      ffi (>= 1.3.0)
    eventmachine (1.0.8)
    fastimage (1.8.1)
      addressable (~> 2.3, >= 2.3.5)
    ffi (1.9.10)
    formatador (0.2.5)
    github-linguist (4.7.3)
      charlock_holmes (~> 0.7.3)
      escape_utils (~> 1.1.0)
      mime-types (>= 1.19)
      rugged (>= 0.23.0b)
    github-markdown (0.6.9)
    googl (0.7.1)
      httparty (~> 0.10)
      json (>= 1.4.6)
    guard (2.13.0)
      formatador (>= 0.2.4)
      listen (>= 2.7, <= 4.0)
      lumberjack (~> 1.0)
      nenv (~> 0.1)
      notiffany (~> 0.0)
      pry (>= 0.9.12)
      shellany (~> 0.0)
      thor (>= 0.18.1)
    guard-compat (1.2.1)
    guard-livereload (2.5.1)
      em-websocket (~> 0.5)
      guard (~> 2.8)
      guard-compat (~> 1.0)
      multi_json (~> 1.8)
    html-pipeline (1.11.0)
      activesupport (>= 2)
      nokogiri (~> 1.4)
    html-proofer (2.6.1)
      activesupport (~> 4.2)
      addressable (~> 2.3)
      colored (~> 1.2)
      mercenary (~> 0.3.2)
      nokogiri (~> 1.5)
      parallel (~> 1.3)
      typhoeus (~> 0.7)
      yell (~> 2.0)
    http_parser.rb (0.6.0)
    httparty (0.13.7)
      json (~> 1.8)
      multi_xml (>= 0.5.2)
    i18n (0.7.0)
    jekyll (3.0.1)
      colorator (~> 0.1)
      jekyll-sass-converter (~> 1.0)
      jekyll-watch (~> 1.1)
      kramdown (~> 1.3)
      liquid (~> 3.0)
      mercenary (~> 0.3.3)
      rouge (~> 1.7)
      safe_yaml (~> 1.0)
    jekyll-assets (2.1.2)
      fastimage (~> 1.8)
      jekyll (~> 3.0)
      sprockets (~> 3.3)
      sprockets-helpers (~> 1.2)
      tilt (~> 2.0)
    jekyll-html-pipeline (0.1.4)
      html-pipeline (~> 1.0)
      jekyll (>= 2.0)
    jekyll-paginate (1.1.0)
    jekyll-redirect-from (0.9.1)
      jekyll (>= 2.0)
    jekyll-sass-converter (1.3.0)
      sass (~> 3.2)
    jekyll-watch (1.3.0)
      listen (~> 3.0)
    json (1.8.3)
    kramdown (1.9.0)
    liquid (3.0.6)
    liquid-c (3.0.0)
      liquid (>= 3.0.0)
    listen (3.0.5)
      rb-fsevent (>= 0.9.3)
      rb-inotify (>= 0.9)
    lumberjack (1.0.9)
    mercenary (0.3.5)
    method_source (0.8.2)
    mime-types (3.0)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2015.1120)
    mini_portile2 (2.0.0)
    minitest (5.8.3)
    multi_json (1.11.2)
    multi_xml (0.5.5)
    nenv (0.2.0)
    nokogiri (1.6.7.1)
      mini_portile2 (~> 2.0.0.rc2)
    notiffany (0.0.8)
      nenv (~> 0.1)
      shellany (~> 0.0)
    parallel (1.6.1)
    posix-spawn (0.3.11)
    pry (0.10.3)
      coderay (~> 1.1.0)
      method_source (~> 0.8.1)
      slop (~> 3.4)
    pygments.rb (0.6.3)
      posix-spawn (~> 0.3.6)
      yajl-ruby (~> 1.2.0)
    rack (1.6.4)
    rake (10.4.2)
    rb-fsevent (0.9.6)
    rb-inotify (0.9.5)
      ffi (>= 0.5.0)
    rouge (1.10.1)
    rugged (0.24.0b11)
    safe_yaml (1.0.4)
    sass (3.4.20)
    shellany (0.0.1)
    slop (3.6.0)
    sprockets (3.5.2)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-helpers (1.2.1)
      sprockets (>= 2.2)
    thin (1.6.4)
      daemons (~> 1.0, >= 1.0.9)
      eventmachine (~> 1.0, >= 1.0.4)
      rack (~> 1.0)
    thor (0.19.1)
    thread_safe (0.3.5)
    tilt (2.0.1)
    typhoeus (0.8.0)
      ethon (>= 0.8.0)
    tzinfo (1.2.2)
      thread_safe (~> 0.1)
    yajl-ruby (1.2.1)
    yell (2.0.5)
    yui-compressor (0.12.0)

PLATFORMS
  ruby

DEPENDENCIES
  github-linguist
  github-markdown
  googl
  guard-jekyll-plus!
  guard-livereload
  html-pipeline
  html-proofer
  jekyll
  jekyll-assets
  jekyll-html-pipeline
  jekyll-paginate
  jekyll-redirect-from
  jekyll-watch
  liquid-c
  pygments.rb
  rack
  rake
  sass
  thin
  tzinfo
  yui-compressor (~> 0.12.0)

BUNDLED WITH
   1.11.2

@envygeeks
Copy link
Owner

At this time my deduction is that maybe Jekyll is removing .asset-cache accidentally against what I wish it to do and against my assumptions of having it covered.

I need to consider looking into and adding proof tests to ensure that is not the case, and that bootstrap is the problem. If you feel these are not the issue you will need to provide more diagnostic relevance since my deductions are based on the short-falls I know in both systems and they line up perfectly and since you cannot provide source and won't take the time to provide replication I'm immediately siding with Occam and going with what I know are known problems.

Without something to replicate this problem with that can demonstrate it, I cannot step into a context in both Jekyll and Jekyll Assets and see where the problem is. I'll be chasing the golden goose. So unless you can help me replicate it with source or example source that doesn't use your source I'll resolve the problems I know can cause this problem like Occam suggested.

Sorry.

@fw42
Copy link
Contributor

fw42 commented Mar 23, 2016

I can confirm this. Switching from 1.x to 2.x (and no other changes at all) almost doubled our build time (from ~30s to ~60s). Will try to debug this and hopefully find a fix.

@fw42
Copy link
Contributor

fw42 commented Mar 23, 2016

Ok I think we know what the problem is.. will submit a PR within the next week or two.

@envygeeks
Copy link
Owner

hey @fw42 wondering if you had any news or if you could point me in the right direction on this? We are about to let loose 2.2 in the next few days so it would be nice to get this fix in there!

@fw42
Copy link
Contributor

fw42 commented Apr 15, 2016

@envygeeks, sorry, we got distracted, I have a working fix, just need to polish it up. Will try to get something PRed within the next week. Can you wait that long with the release?

@envygeeks
Copy link
Owner

@fw42 I can, I'll just cut a beta release for people who use RubyGems and had open tickets and your fix can go into the final release.

@envygeeks envygeeks added this to the v2.2.0 milestone Apr 15, 2016
@adamhollett
Copy link
Contributor

So excited for this. 👍

Repository owner locked and limited conversation to collaborators Apr 19, 2016
Repository owner unlocked this conversation Apr 19, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants