Jekyll Presentation Slides

Post on 07-May-2015

1.934 views 1 download

description

Presentation slides from the December 2011 RubyAZ meeting. Curtis Miller of Flatterline presented on Jekyll, a static site generator that uses Ruby, Liquid and YAML.

Transcript of Jekyll Presentation Slides

jekyllBlogging for Hackers

Curtis Miller / Flatterline

Static Site Generator

Ruby + Liquid + YAML = Awesome!

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

Need a Custom Generator?

No Problem.

module Jekyll class CategoryGenerator < Generator def generate(site) ... end endend

Need a Custom Liquid Tag?

No Problem.module Jekyll class RenderTimeTag < Liquid::Tag def 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

How Do I Get Started?!

gem install jekyll

Thanks!

Any questions?

Curtis Miller / Flatterline / curtis@flatterline.com

https://github.com/flatterline/flatterline.com