Compare commits

..

8 Commits

Author SHA1 Message Date
Pat Hawks
67e34f7453 Cache highlights 2018-08-07 16:24:53 -05:00
Pat Hawks
214c4cbfdd Cache converted Markdown 2018-08-07 12:57:10 -05:00
Pat Hawks
ef6917254f Abstract out Marshal operations 2018-08-07 11:45:54 -05:00
Pat Hawks
95690cf253 Store cached files in subdirs 2018-08-07 10:02:14 -05:00
Pat Hawks
0110527e4d Fix stupid test in a stupid way.
TODO: Fix this.
2018-08-06 20:35:52 -05:00
Pat Hawks
5afb0b95f2 Use files on disk to add persistence to cache 2018-08-06 20:35:34 -05:00
Pat Hawks
8cb7725b65 Fix errors 2018-08-04 15:02:56 -05:00
Pat Hawks
65beddfdd9 Cache parsed Liquid templates
This adapts @ashmaroli's work in #7136 to use this caching mechanism.
2018-08-04 14:27:11 -05:00
15 changed files with 16 additions and 155 deletions

View File

@@ -39,7 +39,6 @@
* Initialize upgrading doc for v4.0 (#7140)
* Add version badge for date filters with ordinal (#7162)
* Add closing tags for <a> (#7163)
* Add TSV to list of supported _data files. (#7168)
### Minor Enhancements
@@ -62,7 +61,6 @@
* Remove support for Redcarpet (#6987)
* Remove support for rdiscount (#6988)
* Remove 'cache_dir' during `jekyll clean` (#7158)
* Output Jekyll Version while debugging (#7173)
### Development Fixes

View File

@@ -3,11 +3,9 @@
[![Gem Version](https://img.shields.io/gem/v/jekyll.svg)][ruby-gems]
[![Linux Build Status](https://img.shields.io/travis/jekyll/jekyll/master.svg?label=Linux%20build)][travis]
[![Windows Build status](https://img.shields.io/appveyor/ci/jekyll/jekyll/master.svg?label=Windows%20build)][appveyor]
[![Maintainability](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/maintainability)][codeclimate]
[![Test Coverage](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/test_coverage)][coverage]
[![Maintainability](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/maintainability)](codeclimate)
[![Test Coverage](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/test_coverage)](coverage)
[![Security](https://hakiri.io/github/jekyll/jekyll/master.svg)][hakiri]
[![Backers on Open Collective](https://opencollective.com/jekyll/backers/badge.svg)](#backers)
[![Sponsors on Open Collective](https://opencollective.com/jekyll/sponsors/badge.svg)](#sponsors)
[ruby-gems]: https://rubygems.org/gems/jekyll
[codeclimate]: https://codeclimate.com/github/jekyll/jekyll
@@ -56,28 +54,6 @@ these terms, please let one of our [core team members](https://jekyllrb.com/team
* Use the built-in [Liquid Extensions](https://jekyllrb.com/docs/templates/) to make your life easier
* Use custom [Plugins](https://jekyllrb.com/docs/plugins/) to generate content specific to your site
## Credits
### Contributors
This project exists thanks to all the people who contribute.
<a href="graphs/contributors"><img src="https://opencollective.com/jekyll/contributors.svg?width=890&button=false" /></a>
### Backers
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/jekyll#backer)
<a href="https://opencollective.com/jekyll#backers" target="_blank"><img src="https://opencollective.com/jekyll/backers.svg?width=890" /></a>
### Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor!](https://opencollective.com/jekyll#sponsor)
<a href="https://opencollective.com/jekyll/sponsor/0/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/0/avatar.svg" /></a>
<a href="https://opencollective.com/jekyll/sponsor/1/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/1/avatar.svg" /></a>
<a href="https://opencollective.com/jekyll/sponsor/2/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/2/avatar.svg" /></a>
## License
See the [LICENSE](https://github.com/jekyll/jekyll/blob/master/LICENSE) file.

View File

@@ -1,15 +0,0 @@
- name: Forestry.io
image: /img/forestry-logo.png
url: https://forestry.io
width: 140
height: 30
- name: CloudCannon
image: /img/cloudcannon-logo.png
url: https://cloudcannon.com
width: 75
height: 30
- name: Siteleaf
image: /img/siteleaf-logo.png
url: https://siteleaf.com
width: 40
height: 50

View File

@@ -16,7 +16,7 @@ Whether you're a developer, a designer, or just a Jekyll devotee, there are lots
* [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
* Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
* Read through [the documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
* Read through [the documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion on how to improve something.
* Browse through [the Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
* Find [an open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
* Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.

View File

@@ -137,9 +137,9 @@ An overview of what each of these does:
<p>
Well-formatted site data should be placed here. The Jekyll engine
will autoload all data files (using either the <code>.yml</code>,
<code>.yaml</code>, <code>.json</code>, <code>.csv</code> or
<code>.tsv</code> formats and extensions) in this directory,
and they will be accessible via `site.data`. If there's a file
<code>.yaml</code>, <code>.json</code> or <code>.csv</code>
formats and extensions) in this directory, and they will be
accessible via `site.data`. If there's a file
<code>members.yml</code> under the directory, then you can access
contents of the file through <code>site.data.members</code>.
</p>

View File

@@ -19,32 +19,9 @@ If you're using Ruby >= 2.3.0, go ahead and fetch the latest version of Jekyll:
gem update jekyll
```
---
### Template rendering
We've slightly altered the way Jekyll parses and renders your various templates to improve
the overall build times. Jekyll now parses a template once, caches it internally and then
renders the parsed template multiple times as required by your pages and documents.
The downside to this is that some of the community-authored plugins may not work as they
previously used to.
#### For Plugin-authors
* If your plugin depends on the following code: `site.liquid_renderer.file(path).parse(content)`,
note that the return value (`template`, an instance of *`Liquid::Template`*), from that line will
always be the **same object** for a given `path`. <br/>
The *`template`* instance is then rendered as previously, with respect to the `payload` passed to it.
You'll therefore have to ensure that *`payload`* is not memoized or cached in your plugin instance.
* If its a requirement that `template` you get from the above step *be different* at all times,
you can invoke *`Liquid::Template`* directly:
```diff
- template = site.liquid_renderer.file(path).parse(content)
+ template = Liquid::Template.parse(content)
```
*Insert sections here*
---

View File

@@ -11,15 +11,5 @@
</a>
</p>
</div>
<div class="unit two-thirds align-right center-on-mobiles">
<p>
Sponsored by
{% for sponsor in site.data.sponsors %}
<a href="{{ sponsor.url }}" style="margin-left: 10px;">
<img src="{{ sponsor.image }}" height="{{ sponsor.height }}" width="{{ sponsor.width }}" alt="{{ sponsor.name }}">
</a>
{% endfor %}
</p>
</div>
</div>
</footer>

View File

@@ -1,68 +0,0 @@
---
title: "Sponsoring Jekyll's development"
date: 2018-08-01 15:00:00 +0200
author: oe
categories: [community]
---
_(TL;DR: We're open for sponsorships on our [OpenCollective page](https://opencollective.com/jekyll))_
Hi Jekyllers,
As you may know, Jekyll is a completely free and open source project. We offer our
software and its related plugins and documentation at no cost because we believe
that good software should not cost anything. We're not planning on changing that,
but today I want to talk about a different monetary aspect of open source.
Open source developers being paid for the work they do is a rare sight. Most open source
software is effectively the result of hundreds and thousands of hours of free labor provided
by individuals who are passionate enough to work outside of their day job to create
software that, ironically, is being used by almost every company that offers
digital services. It's a problem that has gotten more attention in recent years, with
the open source community becoming more diverse and more and more companies actively
investing in providing monetary support for open source developers.
Jekyll has always been a product of volunteers. Rarely has someone been paid to implement
a certain plugin or feature. Today, we're excited to announce that we will finally
be able to fund our contributors! __We are opening an OpenCollective to receive
individual and corporate sponsorships__. This is not unheard of, [Hugo](http://gohugo.io)
is also funded by sponsorships, as are many other similar projects, such as
[webpack](https://opencollective.com/webpack), [Babel](https://opencollective.com/babel) or
[RuboCop](https://opencollective.com/rubocop).
OpenCollective is a service that makes it easy for open source projects to receive funding
from individuals and companies alike. It's specifically designed for open source and
many other projects already use it for funding.
Sponsoring is, for us, a method to finally realize some of the more ambitious goals we've had
with the project for years. The closest thing we want to realize is to __release Jekyll 4.0, and
to make it as polished as we can__. In the future, we would also like to work on other things that
will improve the Jekyll ecosystem. Here's a couple of ideas:
- Create a comprehensive official plugin and theme directory site
- Improve tooling built around measuring and improving Jekyll's performance
- Improve maintenance for official plugins
- Including the community into official decisions; making Jekyll more friendly to folks in the community
Again, these are just some ideas, but with the help of sponsoring, they are now one step closer
to being realized :heart:
<div align="center">
<img src="/img/forestry-logo.png" width="300" />
</div>
With that, we would like to announce our very first sponsor: [__Forestry.io__](https://forestry.io)! Forestry is
a CMS that integrates with your Jekyll sites and lets you update content using a beautiful
interface, and then automatically commits it back to your GitHub repository. We're excited to have
them on board on a new, exciting step of our journey.
Will anything change for Jekyll users? The answer is no - this step does not impact the Jekyll software
in any aspect. In fact, you might see positive changes, such as more features and better
performance. Surprisingly, that's what happens when you properly fund people for their work!
If you have been a long time user for Jekyll and would like to give something back to the project,
you can consider a small monthly donation to our [OpenCollective page](http://opencollective.com/jekyll).
If your company heavily relies on Jekyll, do consider sponsoring us! Contact me at
`olivia at fastmail dot com` and we'll figure something out together.
Thanks for sticking with us, and happy Jekylling! :tada:

View File

@@ -224,7 +224,8 @@ footer {
img {
display: inline-block;
vertical-align: middle;
position: relative;
top: 8px;
margin-left: 5px;
opacity: .8;
padding: 1px;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -53,7 +53,7 @@ module Jekyll
private
def filename_regex
@filename_regex ||= %r!\A(#{source_dir}/|#{theme_dir}/|/*)(.*)!i
@filename_regex ||= %r!\A(#{source_dir}/|#{theme_dir}/|\W*)(.*)!i
end
def new_profile_hash

View File

@@ -10,7 +10,7 @@ module Jekyll
def parse(content)
measure_time do
@template = Jekyll::Cache.new("Jekyll::LiquidRenderer::File").getset(content) do
@template = cache.getset(content) do
Liquid::Template.parse(content, :line_numbers => true)
end
end
@@ -26,7 +26,6 @@ module Jekyll
end
end
# This method simply 'rethrows any error' before attempting to render the template.
def render!(*args)
measure_time do
measure_bytes do
@@ -41,6 +40,10 @@ module Jekyll
private
def cache
Jekyll::Cache.new("Jekyll::LiquidRenderer::File")
end
def measure_bytes
yield.tap do |str|
@renderer.increment_bytes(@filename, str.bytesize)

View File

@@ -43,7 +43,6 @@ module Jekyll
self.log_level = :debug
end
debug "Logging at level:", LOG_LEVELS.key(writer.level).to_s
debug "Jekyll Version:", Jekyll::VERSION
end
# Public: Print a debug message