Removing command line options from the config is a path towards cleaning up the
configuration file and not including options which don't really belong there.
The `ServeCommand` will let you serve your site locally for development. You
can specify `--port`, `--host` and `--baseurl` options if you wish to change the
defaults.
Additionally the `BuildCommand` will be called before the processing of the
serve command, this makes sure that the site is actually built. This means you
are able to pass the `--watch` option to auto-regenerate your site, even while
serving it locally.
The `BuildCommand` class is responsible for handling the building of the site.
It can also optionally watch for changes to files and regenerate the site if
needed.
The `Command` class holds any methods which are used by any command
implementation.
When a post has a title that contains a slash, such as 'This is my cool
blog post part 1/2', convert the slash to a dash so that the post
filename is created correctly.
Fixes issue #680
Currently, Classifier::LSI rebuilds the index every time an entry is
added. This runs into massive performance overheads on my website;
theoretically, disabling automatic index rebuilds, and explicitly
rebuilding the LSI index at the end of the LSI repopulation should
speed things up nicely.
As a side note, here, I use pandoc-ruby to provide a more featureful
Markdown transformer, so be mindful that the numbers I quote here have
artifically imposed I/O overheads.
With just the 76 posts I wrote this year (abysmal, I know), I come up
with the following figures:
Without faster_lsi:
jekyll --lsi 16.91s user 0.88s system 97% cpu 18.302 total
With faster_lsi:
jekyll --lsi 2.72s user 0.77s system 88% cpu 3.940 total
With 109 posts, we begin to see even better improvements:
Without faster_lsi:
jekyll --lsi 51.00s user 1.47s system 98% cpu 53.060 total
With faster_lsi:
jekyll --lsi 5.04s user 1.12s system 91% cpu 6.735 total
At this point, we begin to see I/O overheads being slower than LSI
when faster_lsi is active. I call that fairly conclusive. But wait,
there's more. I have 273 posts lying around... I wonder what happens
if I feed them all in. With faster_lsi, it was nice and clippy.
Without it, I simply gave up, and went and refilled my cup of tea.
And it was still going.
Without faster_lsi:
jekyll --lsi 1277.86s user 10.90s system 99% cpu 21:30.29 total
With faster_lsi:
jekyll --lsi 34.62s user 4.43s system 96% cpu 40.430 total
That is, in anyone's books, a major improvement. Note, however, that
I don't know just how well this will perform with `jekyll --auto`
because I don't know how it does the LSI rebuilds. I _think_ (but
please, don't commit me on this) that the LSI is rebuilt every time
Jekyll picks up a file change.
So, all up, the performance improvement is massive, and scales
depending on how many files you have. At the last point, the
improvement is just on 3200%.
A more optimal solution would be to cache the LSI index and/or content
data somehow. I'll leave that to when faster_lsi takes over ten
minutes to run.
When generating the site, Jekyll will now look for plugins under the
source directory by default. The plugin location can still be changed in
_config.yml