210 likes | 398 Views
Curtis Miller of Flatterline presents for the Ruby AZ meeting December 2011 on Jekyll, a blog-aware, static site generator in the Ruby programming language. /nJekyll was originally created by Tom Preston-Werner and Nick Quaranto for use on GitHub./nJekyll takes a template directory (representing the raw form of a website), runs it through Textile or Markdown and Liquid converters, and spits out a complete, static website suitable for serving with Apache or your favorite web server. It can be used to host a project’s page or blog.
E N D
jekyll Blogging for Hackers Curtis Miller / Flatterline
How Does It Work? • Gathers content from _posts, _includes and other files • Applies a template • Converts Markdown and Textile to HTML • Runs Liquid converters • Outputs static HTML pages
Configurable _config.yml
YAML Configuration • Global configuration options • Per page / post configuration options (YAML Front Matter) • Add your own key / value pairs and use them as you see fit
What’s Built In? • Pagination • Custom permalink structure • Related post extraction (use with GSL for faster generation) • Syntax highlighting • Markdown / Textile conversion
Plugin Architecture (easily extensible) _plugins/*.rb
No Problem. module Jekyll class CategoryGenerator < Generatordef generate(site) end endend
No Problem. module Jekyll class RenderTimeTag < Liquid::Tagdef render(context) end endend Liquid::Template.register_tag(‘render_time’, Jekyll::RenderTimeTag )
Deployment • Heroku free instance • GitHub Pages • Directly to Amazon S3 • Anywhere that can serve static pages!
What If I Want Blog Comments? Extend with Disqus, Intense Debate or Facebook comments
What If I Need Something Dynamic? Extend with Sinatra
Typical Workflow $ cd <my blog dir> $ foreman start [Runs whatever you specified - e.g., Jekyll, Compass, Sinatra, etc.] $ mate _posts/2011-12-20-jekyll-blogging-presentation-at-rubyaz.md[Add content to file...] $ git add _posts/2011-12-20-jekyll-blogging-presentation-at-rubyaz.md$ git commit -m “New post about Ruby AZ presentation”$ git push && git push heroku
Any Gotchas? • YAML Front Matter means it’s a special file; No YAML, no special processing • Pagination only works with HTML files (i.e., no Markdown or Textile pagination) • No generator for initial directory structure
A Few Stats (as of 2011-12-20) • Over 400 documented sites using Jekyll • ~50 plugins • >4,500 watchers • >700 forks
Thanks! Any questions? Curtis Miller / Flatterline / curtis@flatterline.com https://github.com/flatterline/flatterline.com